数据库锁机制
共享锁
排他锁
更新锁
排他锁(独占锁,Exclusive Locks)
意向锁(Intent Locks)
计划锁(Schema Locks)
DDL语句都会加Sch-M锁
该锁不允许任何其它session连接该表。连都连不了这个表了,当然更不用说想对该表执行什么sql语句了。
附:各种锁的兼容关系表
| Requested mode | IS | S | U | IX | SIX | X | | Intent shared (IS) | Yes | Yes | Yes | Yes | Yes | No | | Shared (S) | Yes | Yes | Yes | No | No | No | | Update (U) | Yes | Yes | No | No | No | No | | Intent exclusive (IX) | Yes | No | No | Yes | No | No | | Shared with intent exclusive (SIX) | Yes | No | No | No | No | No | | Exclusive (X) | No | No | No | No | No | No |如何提高并发效率
- 悲观锁:利用数据库本身的锁机制实现。通过上面对数据库锁的了解,可以根据具体业务情况综合使用事务隔离级别与合理的手工指定锁的方式比如降低锁的粒度等减少并发等待。实现方式提交时select ……for update nowait
- 乐观锁:利用程序处理并发。原理都比较好理解,基本一看即懂。方式大概有以下3种
- 对记录加版本号.
- 对记录加时间戳.
- 对将要更新的数据进行提前读取、事后对比。
不论是数据库系统本身的锁机制,还是乐观锁这种业务数据级别上的锁机制,本质上都是对状态位的读、写、判断。
1825

被折叠的 条评论
为什么被折叠?



