mysql 锁与事务的一些概念

mysql InnoDB引擎

共享锁(S) select ... lock in share mode, 加了共享锁的数据, 其它地方只能加共享锁, 不能加排他锁.

排他锁(X) select ...for update, update,delete,insert 都会自动给涉及到的数据加上排他锁, 加了排他锁的数据, 其它地方不能再加任何锁.

事务四个隔离级别
1.未提交读: 可以读未提交数据.
2.提交读: 只能读已提交的数据.
3.可重复读: 前后两次读取数据一致, 两种情况,一种, 开启事务, select出数据A,  数据A在其它地方被修, 再select出数据A, 这时两次数据是一样的,  二种, 开启事务, 其它地方修改出据A, select出数据A, 其它地方再修改数据A, select出数据A, 此时两次select的数据都是第一次修改后的数据.
4.串行读: 串行化的读. 每次读都需要获得表级共享锁.

还有乐观锁和悲观锁,乐观锁是加一个字段版本,来用判断更新前后是否一致。

锁堵塞多数是事务没及时提交造成的

参考 Innodb中的事务隔离级别和锁的关系 

原文地址:https://www.cnblogs.com/jimzbom/p/7591983.html