MySQL隔离级别小结


在MySQL5.7中默认的隔离级别是:可重复读 REPEATABLE-READ。

四种事务特性(ACID)
原子性:Atomicity
一个事务应该是一个不可分割的工作单位,事务中包括的操作要么都成功,要么都不成功。

一致性:Consistency
事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

隔离性:Isolation 
一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据在事物未提交前对并发的其他事务是隔离的,并发执行的各个事务之间不能互相影响。

持久性:Durability 
一个事务一旦成功提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
1
2
3
4
5
6
7
8
9
10
11
四种隔离级别
读未提交:read-uncommitted
产生脏读问题、不可重复读问题、幻读问题

读已提交:read-committed
产生不可重复读问题、幻读问题

可重复读:repetable-read
依然存在幻读问题

串行化:serializable
1
2
3
4
5
6
7
8
9
10


并发问题
脏读
一个事务读取到了其他事务还没有提交的数据

不可重复读
一个事务在进行中读取到了其他事务对旧数据的修改结果

幻读
当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,比如这种修改涉及到表中的“全部数据行”。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入“一行新数据”。那么,以后就会发生操作第一个事务的用户发现表中还存在没有修改的数据行。

在MySQL中,会在表中每一条数据后面添加两个字段:
创建版本号:创建一行数据时,将当前系统版本号作为创建版本号赋值
删除版本号:删除一行数据时,将当前系统版本号作为删除版本号赋值
1
2
操作数据库时具有规则:(创建版本号<=当前事务版本号)&&(删除版本号为空或>当前事务版本号)。

排他锁,共享锁
MySQL中的两把表级锁。
排它锁(exclusive lock),又称为X 锁,写锁。

当一个请求在写数据时,其他请求不能执行任何操作
共享锁(shared lock),又称为S 锁,读锁。

当一个请求在读数据时,其他请求也可以读,但是不能写
————————————————
04269320

发布了515 篇原创文章 · 获赞 10 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/xiamaocheng/article/details/104286918