oracle 锁和闩_笔记4:乐观锁定还是悲观锁定
乐观锁定还是悲观锁定
那么哪种方法最好呢?根据经验,悲观锁定在Oracle中工作得非常好(但是在其他数据库中可能不是这样),而且与乐观锁定相比,悲观锁定有很多优点。不过,它需要与数据库有一条有状态的连接。如客户/服务器连接,因为无法跨连接持有锁。正是因为这一点,在当前的许多情况下,悲观锁定不太现实。如今对大多数应用来说,建议采用乐观并发控制。要在整个事务期间保持连接,这个代价太大了,一般无法承受。
在这些可用的方法中,使用哪一种呢?使用版本列方法,并增加一个时间戳列(而不只是一个NUMBER)。从长远看,这样能提供一个额外的信息。而且与散列或校验和方法相比,计算的代价不那么昂贵,在处理LOG、LONG RAW、CLOG、BLOB和其他非常大的列时,散列或校验和方法可能会遇到一些问题,而版本列方法则没有这些问题。
???如果必须向一个表增加乐观并发控制,而此时还在利用悲观锁定机制使用这个表(例如,客户/服务器应用都在访问这个表,而且还在通过Web访问),倾向于选择ORA_HASH方法。这是因为,在现有的遗留应用中,可能不希望出现一个新列,或者即使我们另外增加一步把这个额外的列隐藏起来,为了维护这个列,可能需要一个必要的触发器,而这个触发器的开销非常大,这是我们无法承受的。ORA_HASH技术没有干扰性,而且在这个方面是轻量级的。散列/校验和方法在数据库独立性方面很不错,特别是如果我们在数据库之外计算散列或校验和,则更是如此。不过,如果在中间层而不是在数据库中执行计算,从CPU使用和网络传输方面来看,就会带来更大的资源使用开销。
本文来源 我爱IT技术网 http://www.52ij.com/jishu/5195.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
