深入理解Mysql事务隔离级别

一、想要深入理解Mysql的事务隔离级别首先要理解Mysql的共享锁和排他锁。

1、共享锁

共享锁也叫读锁(Shared Lock),简称S锁,原理:一个事务获取了一个数据行的共享锁,其他事务能获得该行对应的共享锁,但不能获得排他锁,即一个事务在读取一个数据行的时候,其他事务也可以读,但不能对该数据行进行增删改。

2、排他锁

排他锁也叫写锁(Exclusive Lock),简称x锁,原理:一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁(排他锁或者共享锁),即一个事务在读取一个数据行的时候,其他事务不能对该数据行进行增删改查。

二、事务隔离级别的实现原理

1、读未提交(READ_UNCOMMITED)

(1)事务对当前被读取的数据不加锁。

(2)事务在更新某数据的瞬间(就是发生更新的瞬间),必须先对其加行级共享锁,直到事务结束才释放。

2、读已提交(READ_COMMITED)

(1)事务对当前被读取的数据加行级共享锁(当读到时才加锁),一旦读完该行,立即释放该行级共享锁。

(2)事务在更新某数据的瞬间(就是发生更新的瞬间),必须先对其加行级排他锁,直到事务结束才释放。

3、可重复读(REPEATABLE_READ)

(1)事务在读取某数据的瞬间(就是开始读取的瞬间),必须先对其加行级共享锁,直到事务结束才释放。

(2)事务在更新某数据的瞬间(就是发生更新的瞬间),必须先对其加行级排他锁,直到事务结束才释放。

4、可串行化(SERIALIZABLE)

(1)事务在读取数据时,必须先对其加表级共享锁 ,直到事务结束才释放。

(2)事务在更新数据时,必须先对其加表级排他锁,直到事务结束才释放。

你可能感兴趣的:(深入理解Mysql事务隔离级别)