入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

Oracle如何保证并发操作?

创建时间:2017-03-13 投稿人: 浏览次数:980

Oracle采用封锁技术保证并发操作的可串行性

Oracle的锁分为两大类:数据锁(亦称DML锁)和字典锁。

字典锁是Oracle DBMS内部用于对字典表的封锁。字典锁包括语法分析锁和DDL锁,由DBMS在必要的时候自动加锁和释放锁,用户无权控制。

Oracle主要提供了五种数据锁:

共享锁(S锁)、排他锁(X锁)、行级共享锁(RS锁)、行级排他锁(RX锁)和共享行级排他锁(SRX锁)。

其封锁粒度包括行级和表级。数据锁的相容矩阵如图所示。


Oracle数据锁的相容矩阵


Oracle如何保证并发操作? - 那海蓝蓝 - 那海蓝蓝的博客 

在通常情况下,数据封锁由数据库系统控制,对用户透明。但Oracle也允许用户用LOCK TABLE语句显式对封锁对象加锁。

    Oracle数据锁的一个显著特点是,在缺省情况下,读数据不加锁。也就是说,当一个用户更新数据时,另一个用户可以同时读取相应数据,反之亦然。Oracle通过回滚段(Rollback Segment)的内存结构来保证用户不读“脏”数据和可重复读。这样做的好处是提高了数据的并发度。

Oracle提供了有效的死锁检测机制,周期性诊断系统中有无死锁,若存在死锁,则撤消执行更新操作次数最少的事务。

 

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。