数据库的锁机制

来源:互联网 发布:帝国cms 全站伪静态 编辑:程序博客网 时间:2024/06/05 10:33

看了一些关于数据库锁机制的文章,涨了很多见识,在这里把自己的学到的简单总结归纳一下
1.数据库规定对于同一资源不能同时共存共享锁和排他锁。
2.共享锁兼容,两个共享锁是可以存在同一资源上的,表明共享锁不阻止 其它session同时读资源, 但阻止其它session进行update操作。
3.更新锁(为了解决死锁引进)
表示获取从共享锁到排他锁的资格。一个事物只能有一个更新锁获此资格。这样做比直接使用排它锁提高了效率。
4.共享锁和更新锁可以在同一个资源上,这说明它们是兼容的。
5.排它锁和更新锁是不兼容的,不能同时加在同一资源上。
6.意向锁
当一个表中的某一行被加上排他锁后,该表就不能再被加表锁。当需要加表锁,需要检查每一行是否有排它锁,这样会很麻烦且效率低下,可以直接判断是否有意向锁就可以确定表中是否有行数据有排它锁,提高了效率。
7.计划锁
DDL语句都会加Sch-M锁,该锁不允许任何其它session连接该表。用jdbc向数据库发送了一条新的sql语句,数据库要先对之进行编译,在编译期间,也会加锁,称之为:Sch-S,编译这条语句过程中,其它session可以对表tableA做任何操作(update,delete,加排他锁等等),但不能做DDL(比如alter table)操作。

参考文章:http://blog.csdn.net/samjustin1/article/details/52210125