mysql的同享锁与排他锁详解
同享锁又称为读锁,简称S锁,望文生义,同享锁就是多个事务关于统一数据可以同享一把锁,都能拜访到数据,但是只能读不克不及修改。
排他锁又称为写锁,简称X锁,望文生义,排他锁就是不克不及与其他所共存,如一个事务猎取了一个数据行的排他锁,其他事务就不克不及再猎取该行的其他锁,包含同享锁和排他锁,但是猎取排他锁的事务是可以对数据就行读取和修改。
关于同享锁大家可能非常不错了解,就是多个事务只能读数据不克不及改数据,关于排他锁大家的了解可能就有些差别,我起初就犯了一个差错,认为排他锁锁住一行数据后,其他事务就不克不及读取和修改该行数据,其实不是这样的。排他锁指的是一个事务在一行数据加上排他锁后,其他事务不克不及再在其上加其他的锁。mysql InnoDB引擎默许的修改数据语句,update,delete,insert都会主动给波及到的数据加上排他锁,select语句默许不会加任何锁类型,要是加排他锁可以运用select ...for update语句,加同享锁可以运用select ... lock in share mode语句。所以加过排他锁的数据行在其他事务种是不克不及修改数据的,也不克不及通过for update和lock in share mode锁的方式查询数据,但可以直接通过select ...from...查询数据,由于普通查询没有任何锁机制。
说了这么多,咱们来看下下列简略的例子:
我们有如下测试数据
可以看到效果与预测的同样。
举荐教程:《Mysql教程》
以上就是mysql的同享锁与排他锁详解的细致内容,更多请关注 百分百源码网 其它相干文章!