目 录CONTENT

文章目录

Mysql 事务隔离级别

小张的探险日记
2021-09-15 / 0 评论 / 0 点赞 / 620 阅读 / 909 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2021-12-16,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Mysql 事务隔离级别

首先 Mysql 支持事务的常用 引擎是 INNODB

Mysql 事务的特性为 :ACID

A: 原子性,即为最小的逻辑执行单位---实现原理: undo log

C: 一致性,要么同时成功,要么同时失败

I: 隔离性,指事务内部的操作与其它事务是隔离的,并发执行各个事务之间不干扰。

D: 持久性,一旦事务成功,数据一定会存储到数据库--- 实现原理 redo log

事务隔离等级分为

事务隔离级别脏读不可重复读幻读
读未提交(read-uncommitted)
不可重复读(read-committed)
可重复读(repeatable-read)
串行化(serializable)

1.脏读

​ 引起原因是--- 事务的隔离级别为 READ-UNCOMMITTED(读未提交)

事务A 开始事务,并执行查询 select * from student,未提交
事务B 开始事务,并执行 insert into student values('6','6','6','2021'),未提交
事务A 再次执行查询,查询到 事务B 未提交的数据条
事务B 未提交的数据回滚
事务A 再次执行查询,查询不到 事务B 未提交的数据条

2.不可重复读

​ 事务的隔离级别为 READ-COMMITTED(读已提交-又叫 不可重复读)

​ 在事务A 中先后两次读取同一数据,两次读取的结果都不一样,这种现象称为不可重复读。 重复读与脏读 的区别在于, 脏读是 读取到 未提交的数据,不可重复读是 读取到 已提交的数据。

事务A 开始事务,并执行查询 select * from student where id='1',未提交
事务B 开始事务,并执行 update student set age='999999' where id='1'并提交
事务A 再次执行查询,查询到 事务B 修改的数据条,和第一次不一样,产生不可重复读问题

3.幻读

​ 不可重复读和幻读的区别是,不可重复的是数据产生了变化,幻读是多了新增的数据

事务A 开始事务,并执行查询 select * from student,未提交
事务B 开始事务,并执行 insert into student values('7','7','7','2021') 并提交
事务A 再次查询 查询结果与上一次不一样,出现幻读
0

评论区