锁机制是在处理高并发的状况下,保证数据的完整性、一致性, INNODB 锁的粒度是行级锁,具体的锁各类数据库各类引擎可能采用各自不一样的方式,没必要拘泥于具体的某种方式, 用到什么数据库 了解就好了。数据库
2. 锁的类型 并发
共享锁(S):兼容S锁, 容许读 高并发
排他锁(X):容许一个事务更新或者删除 事务
3. 数据的一致性 it
3.0隔离级别 table
Serializable (串行化):可避免脏读、不可重复读、幻读的发生。 date
read Repeatable (可重复读):可避免脏读、不可重复读的发生。select
Read committed (读已提交):可避免脏读的发生。next
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)