访问意向 - 隔离级别和更新锁定
WebSphere® Application Server 访问意向策略提供了一致的方法,用于在您的环境中跨不同关系数据库为 CMP bean 数据定义隔离级别。
在已部署的应用程序中,访问意向策略并行定义与访问类型的组合表示 Application Server 在数据库连接上设置的隔离级别值。要获取有关并行和访问类型的更多信息,请参阅“并行控制”以及“访问意向与隔离”的相关文章。属性的此组合还表示 Application Server 通过 JDBC 预编译语句传递至数据库的更新锁定标志。
WebSphere Application Server 提供的隔离级别定义比数据库提供的多。数据库将隔离级别定义为仅有的三种类型中的其中一种。而且,只有一个参数指示数据库在引入连接上设置的隔离级别类型。这三种类型中的每一种都可以用另一个参数值来表示,这由各个数据库供应商确定。例如,一个数据库可能将某个隔离级别定义为 RR(JDBC 可重复读),而另一个数据库可能将这个隔离级别定义为 RC(JDBC 已落实读)。
由于这种不一致的情况,WebSphere Application Server 不会将访问意向策略映射至参数值。相反,Application Server 会将访问意向策略映射至所有数据库供应商之间常用的隔离级别类型。
访问意向概要文件 | 隔离级别 | 更新锁定实现 | |||||
---|---|---|---|---|---|---|---|
DB2® | Oracle* | SyBase | Informix® | Apache Derby | SQL Server | ||
wsPessimisticUpdate - Weakest LockAtLoad(缺省策略) | RR | RC | RR | RR | RR | RR | 否(*Oracle,是) |
wsPessimisticUpdate | RR | RC | RR | RR | RR | RR | 是 |
wsPessimisticRead | RR | RC | RR | RR | RR | RR | 否 |
wsOptimisticUpdate | RC | RC | RC | RC | RC | RC | 否 |
wsOptimisticRead | RC | RC | RC | RC | RC | RC | 否 |
wsPessimisticUpdate No-Collisions | RC | RC | RC | RC | RC | RC | 否 |
wsPessimisticUpdate- Exclusive | S | S | S | S | S | S | 是 |
- RC = JDBC 已落实读
- RR = JDBC 可重复读
- S = JDBC 可序列化
- * Oracle 不支持 JDBC 可重复读 (RR)。因此,wsPessimisticUpdate-weakestLockAtLoad 和 wsPessimisticUpdate 在 Oracle 中与 wsPessismisticRead 和 wsOptimisticRead 一样以相同的方式运转。由于 Oracle 限制,OracleXADataSource JDBC 类不能在 S 事务隔离级别下运行。因此,您不能使用此类来运行包含某些企业 bean 的应用程序,这些企业 bean 具有为通过 S 隔离装入 bean 而配置的访问意向策略。
- 建议在 V6.0 中不要使用为每个 EJB 方法设置访问意向策略的支持。建议您只为整个 bean 设置访问意向。
MS SQL Server 2005 的新增内容: MS SQL Server 2005
为“已落实读”和“可序列化”这两个隔离级别分别提供了一个新选项:
- 具有快照的已落实读
- 事务快照(对于可序列化)
结构化查询语言 (SQL) 关键字和限制
数据库 | 用于锁定更新的 SQL 语法 | 连接限制 | 顺序限制 | 子查询限制 | 聚集限制 |
---|---|---|---|---|---|
DB2 | FOR UPDATE OF | 不允许 | 不允许 | 不允许 | 不允许 |
DB2 UDB iSeries 版(V5R3 和更早版本) | FOR UPDATE OF | 不允许 | 允许,但是需要满足限制 * | 允许,但是需要满足限制 * | 不允许 |
DB2 UDB iSeries 版(V5R4 和更高版本) | WITH RS/RR USE AND KEEP EXCLUSIVE LOCKS | 不允许 | 允许,但是需要满足限制 * | 允许,但是需要满足限制 * | 不允许 |
DB2 on z/OS® V8.x | WITH RS/RR USE AND KEEP UPDATE LOCKS | 无 | 无 | 无 | 无 |
DB2 UDB 工作站 V8.2 | WITH RS/RR USE AND KEEP UPDATE LOCKS | 无 | 无 | 无 | 无 |
Oracle | FOR UPDATE | 无 | 无 | 无 | 无 |
Apache Derby | FOR UPDATE OF | 不允许 | 不允许 | 不允许 | 不允许 |
Informix | FOR UPDATE | 不允许 | 不允许 | 不允许 | 不允许 |
Sybase | FOR UPDATE | 不允许 | 不允许 | 不允许 | 不允许 |
Sqlserver | UPDLOCK | 不允许 | 不允许 | 不允许 | 不允许 |
注: 要获取有关这些所允许 SQL 限制的局限性的详细信息,请参阅 DB2 Universal Database™ for iSeries SQL 参考。可以在 iSeries V5R4 信息中心中找到此文档。在“内容”导航区域中,单击 。