日期:2014-05-16  浏览次数:20370 次

Oracle并发与多版本介绍

????

???? 所谓并发控制,就是数据库本身允许多用户同时操作某一条记录,同时保证所访问数据的正确性。

?

????? oracle里面可以使用锁来管理共享资源的并发访问,oracle里面的锁大概有这么几种:

?

????? 1. TX锁:修改数据的事务在执行期间会获得这种锁。比如在这个事务期间修改了某一行数据,还未提交,那么这一行数据会被锁定(这时候不允许其他事务修改,但允许读取)。

?

????? 2. TM锁与DDL锁:在你修改一个表的内容(对于 TM 锁)或表本身(对应 DDL 锁)时,这些锁可以确保对象的结构不被修改。(比如你更新了A表的某一行,那么会在这个表上面加一个TM锁,防止其他用户在你更新的时候,对表进行DROP之类的操作)。

?

????? 3. 闩(latch):这是Oracle的内部锁,用来协调对其共享数据结构的访问。(确保共享的资源被串行化访问)

?

????? 但是,无论哪一种锁,请求锁时都存在开销,在oracle中还有另外一种机制来支持并发性--多版本体系结构。 多版本是指oracle可以同时物化多个版本的数据,当然这就是oracle提供数据读一致性视图的机制(就是在一个时间点能够得到一致性的结果),相当于用户在读取数据的那一刻,把所有要读取的数据拍了一张照片,也就是在读取数据的那一刻,结果已经知道了。这样就避免了其他事务的负面影响。多版本的一个好处就是,数据的读取器绝不会被数据的写入器阻塞(也就是如果你只是去查询数据,在oracle里面绝对不会被阻塞),这也是oracle与其他数据库的一个根本区别。

?

?