Web开发人员编程模型:隔离级别
在允许并发读入操作的过程中,支持写入操作。这种级别只要能够读取到快照,便可以定期地同步数据库副本。最好在写入操作很少,不想与读入操作冲突,且查询结果需要一致性的时候使用这种隔离级别。
例子::一个查询比修改频繁,且只保留最新值的货币换位表或者查询表。 5、游标稳定性(Cursor Stability)游标稳定性隔离扩展了读已提交,并且是许多关系型数据默认的隔离级别。在这种隔离级别中,悲观事务如果在一个单独的语句中执行的话,必须得指定它将修改的记录。这通常可以在"SELECT"查询后附加“FOR UPDATE”关键字来实现。在这种情况下,其他冲突的读写悲观事务都将被阻塞直到该事务结束为止。乐观事务会跟踪提交时被验证的所有修改记录/实体的版本号。这是一种很流行的乐观隔离级别,因此被所有的主流对象关系映射库支持。在Java持久性API中,可以使用FLUSH_ON_COMMIT(尽管查询可能不影响本地改动)来接近达到这种级别,且如果检测到冲突的话,可以抛出OptimisticLockException 异常。这种隔离也同样可以用在HTTP头域的If-Match或者 If-Unmodified-Since中,它可以用来在更新前对比上一个资源的版本或者时间戳。这种级别最好在实体由外部信息(不从数据库中读取)更改,或者改动不会彼此覆盖的情况下使用。 例子:一个共享的公司目录或者一个wiki。 6、可重复读取(Repeatable Read)可重复读取级别扩展了游标稳定性,它保证事务内的任何数据在事务过程中都不会被修改或者移除。悲观事务需要读取所有记录上的锁,并阻塞其他服务来修改这些记录。乐观事务则会跟踪所有的记录或者实体,并检查它们是否在提交时被修改过。这种级别最好在实体状态能够影响其他实体,或者事务由读写操作构成的情况下使用。 例子:一个订单跟踪数据库,它从一个实体中读取值并用它来计算其他的实体值。 7、快照隔离(Snapshot Isolation)快照隔离扩展了快照读取和可重复读取,它保证事务中所有进行的读操作都能看到数据库中一致的快照。事务执行的的任何读操作都会有相同的结果,而不管它们在事务中执行的早晚。这和可重复读取不同,因为快照隔离能够防止幻读(查询结果不断变化)。许多关系型数据库采用多版本并发控制(也可以叫做 SERIALIZABLE)来支持这种级别,实现方法是通过锁和冲突检测的组合。在这种级别中,考虑到它可能与悲观机制或者乐观机制相冲突,因此事务一定要做好回滚的准备。悲观机制会通过锁住资源来尝试减少冲突的机会, |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |