InnoDB事务理解

1. 标准事务【官方定义】

read-uncommitted:会出现脏读,读到未提交的内容

read-committed:会出现不可重复读,读到提交了的内容(某行)

repeatable read:会出现幻读,范围读取读到新insert的内容(某范围行)

Serializable:完美

 

2. InnoDB

read-uncommitted:无甚区别

read-committed: 无甚区别

repeatable read【默认】:采用MVCC来避免了不可重复读,采用局部锁(Next-Key Locking)避免了幻读

serializable:无甚区别

 

小结:

所以到底数据库的事务是怎么一回事不能看标准定义,还要看这个数据库本身的实现,不一定是会严格按照定义来实现

 

.  一致性非锁定读

MVCC:多版本技术,在repeatable read模式下,从undo读取事务开始时的行数据版本

. 一致性锁定读

即:select ...... for update, 这里给所有涉及到的所有查询行数据加上x锁

 

. 锁

这个观察好:INNODB_TRX/DATA_LOCKS 就可以推测出大概了。

只要记住:

x/x;x/s 不兼容

s/s 兼容

你可能感兴趣的:(Mysql,InnoDB浅析)