oracle锁深入
来源:互联网 发布:排序算法简单比较 编辑:程序博客网 时间:2024/05/21 09:13
oracle对于insert,update,delete的操作时会加一个排它锁与 TM锁。
这里的排它锁主要是防止,其它session修改当前的行。TM则是防止 其它session修改表结构,如drop table等操作。
oracle锁实现主要有两种:队列锁与闩。前者就是对于insert,update,delete这些操作时加的排它锁都用这种实现。后者是保护oracle内部的共享内存资源(如果存放sql执行计划结果的内存区域)。
oracle对于insert,如果当前表对当前列ID加了一个unique约束。这时oracle要保证,表中的ID是唯一的,具体实现如下:
1. session1,要插入一行ID为1的行。oracle将这个ID进行散列,最后映射到,共享内存中的散列表(假设大小为10000)中的X,这个散列表中每个块代表一个锁。
这时session1获取到了x处的锁,事务此时未提交。
2.session2,也插入一行ID为1的行,与前面一样,发现散列表中X处的锁已经被其它事务获取了,因此阻塞等待。
3.接着session1提交了事务,session2因此开始活动,提交时,发现已经存在该ID为1的行。这时抛出一个主键已存在异常。
oracle对于update这样的操作,则是,在行所在的数据块上记录相应行是否被其它session锁定。也就是说数据块中会预留一部分空间记录相应行的锁信息(可配置)。
oracle事务的隔离级别主要有read_commit(读已提交), repeat_read(可重复读),seriable(串行化)
oracle不存在read_uncommit的事务隔离级别,因为oracle为了保证读一致性,底层是通过从undo块中创建当前行的一个副本(拥有相应版本号)来保证。所有的读都会读取这个副本。
这样也就不存在脏读情况。
- oracle锁深入
- ORACLE锁机制深入理解
- ORACLE锁机制深入理解
- ORACLE锁机制深入理解
- ORACLE锁机制深入理解
- ORACLE锁机制深入理解
- Oracle 锁机制原理(深入剖析)
- Oracle的深入学习
- 深入解析oracle回滚段
- 深入解析ORACLE字符集
- 深入解析ORACLE字符集
- 深入了解Oracle事务
- 深入分析Oracle 字符集
- 深入解析ORACLE字符集
- 深入了解Oracle SCN
- 深入解析oracle回滚段
- oracle深入Log Buffer
- ORACLE SCN 深入解析
- Leetcode: Binary Tree Zigzag Level Order Traversal
- [整理]VIM使用指南
- excel表格中经纬度格式转换的公式
- HD、BD、MKV和RMVB、DVD、AVI
- js动态添加事件
- oracle锁深入
- 黑马程序员_集合
- JBoss 系列七十九: jBPM 6 示例之 evaluation
- 父类子类有同名变量时候的初始化
- C#Linq查询DataTable注意事项
- 找出最长及最短字符串
- 黑马程序员_抽象类与接口
- 关于青春的电影有哪些
- Windows API函数之PlaySound函数以及sndPlaySound函数用法