MySQL-事务特性ACID你真的懂吗?

ACID分别是 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

概念的东西就不在赘述了,最近遇到一个关于事务隔离性的问题。

简单回顾一下关于事务隔离特性的几个级别

read uncommitted(读未提交) 、read committed(读提交) 、repeatable read(重复读) 、Serializable(序列化)

查看当前数据库事务隔离级别 select @@transaction_isolation;

参考文献:MySQL :: MySQL 8.0 Reference Manual :: 13.3.7 SET TRANSACTION Statement

简单讨论一下几个关于隔离特性的几个问题

问题1 可重复读指的是什么?

在同一个事务中同一条查询语句返回的结果是相同的。不受其他事务影响。

问题2  在同一个事务中如果amount发生了update或insert操作,事务在未提交前查询返回的结果是否是更新后或插入后的结果?为什么?
答案:会 读取到后更新或插入后的结果。这是因为select 读取数据有个两种模式,如果不加锁的模式为快照读 ,如果添加锁(lock in share mode,for update)为当前读。

问题3 事务中快照读和当前读分别怎样解决重复读级别下幻读问题的?

mvcc和next-key锁

MySQL 到底是怎么解决幻读的?-CSDN论坛

问题4 两个事务中都没有提交情况下,每个事务中分别执行insert语句 执行顺序对最后表中结果有什么影响?为什么?

表会按照执行insert顺序记录。对于UPDATE、DELETE和INSERT语句,InnoDB会自动给涉及数据集加排他锁(X)

看到这里你可能还是不太明白,如果你读完下一篇MYSQL锁的文章你自然就明白了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术分子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值