锁机制是在处理高并发的情况下,保证数据的完整性、一致性, INNODB 锁的粒度是行级锁,具体的锁各种数据库各种引擎可能采用各自不同的方式,不必拘泥于具体的某种方式, 用到什么数据库 了解就行了。
2. 锁的类型
共享锁(S):兼容S锁, 允许读
排他锁(X):允许一个事务更新或者删除
3. 数据的一致性
3.0隔离级别
Serializable (串行化):可避免脏读、不可重复读、幻读的发生。
read Repeatable (可重复读):可避免脏读、不可重复读的发生。
Read committed (读已提交):可避免脏读的发生。
Read uncommitted (读未提交):最低级别,任何情况都无法保证。
3.1 一致性非所定读
INNODB 采用MVCC的方式来读取当前执行时间数据库中数据行的数据,如果的读取的行正在执行delete或update操作,这样不会等待锁的释放, 相反的,INNODB会读取数据行的快照, 在事务的隔离级别为READ COMMITTED 和 REPEATABLE READ 下, Innodb采用非锁定一致性读。在不同的隔离级别下, 读取快照的的方式可不同, 在提交读中,读取最新的快照,在 重复读的级别下, 对于快照总是读取事务开始时的版本。
3.2 一致性锁定读
在用户显示的指定读操作是锁定时: select ... from table_name for UPDATE; select ... from table_name lock in share mode; 3.3 自增长锁
3.3 锁粒度
行级锁(record lock)
间隙锁(gap lock)
后健锁(next-key lock = record lock + gap lock)