数据库访问中的锁定策略
2009-10-21 00:00:00 来源:WEB开发网User begins by asking for available resources
Begin read transaction:
System searches for resource availability
End read transaction
System may use rules to prioritize possible options
System presents options to user
User makes a selection
Begin Update transaction:
Validate that selected resources are still available
Lock all resources using read for update (pessimistic locking) either on the item to
updated, or on a related namespace lock in a locking table for new inserts
If any failures, rollback transaction and return to user to make a new selection
Otherwise update all resources
End Update transaction (Commit)
隔离级别
JDBC 定义了以下四种隔离级别:
TRANSACTION_SERIALIZABLE
在 DB2 中称为 Repeatable Read,是最强的隔离级别。数据库表中受当前事务影响的所有行都将被锁定,其他事务不能插入、删除或更新,以确保相同的查询能返回完全相同的结果。(但其他事务可读取锁定行)。所有被引用行(不仅是被检索行)都将被锁定,由于存在大量数据行被锁定的可能性,因此也存在较大的锁升级为完全的表级锁的可能性。在某些数据管理系统中,优化工具可以根据可能出现的锁升级要求来立即对某个表加锁。在此隔离级别中不允许出现幻象行,也不允许未提交读取。
TRANSACTION_REPEATABLE_READ
在 DB2 中称为 Read Stability。在此隔离级别中可以出现幻象行,但只有那些满足预定义条件的数据行才会被锁定。但是,这些行被确保能在工作单元期间保持稳定,只有在提交之后,才会解除锁定。在此隔离级别上,其他工作单元创建的未提交行不可见。
更多精彩
赞助商链接