MySQL MVCC下,UPDATE后SELECT为何能读到已提交数据?

事务B通过事务ID和快照读取间隔读取提交的数据。

事实:MySQL 官方文档明确指出到 2 02 3 年。
时间:事务A提交后0秒。
编号:交易 ID B > 交易 ID A。

这是一个陷阱。
不相信就不要这样做,不要那样做。

实践警告:验证事务隔离级别是否为已提交读。

mysql事务是什么意思

MySQL事务...这个东西非常重要。
它是一组要么全部成功,要么全部失败的过程。
这场战斗不可能赢一半。

例如...例如,2 02 2 年...在上海...有一个银行系统...转账。
借方1 00元……又向对方账户添加1 00元……这应该是同一笔交易。
扣不了钱……对方还没有收到……这很烦人。
两者必须同时成功。
如果一个链接出现问题……整个事情都需要回滚。
扣除1 00元...或者全部加回来。

另一个例子...北京...有一个电子商务网站...处理订单。
下订单...减少库存...添加订单记录...这应该是同一笔交易。
库存减少...订单历史记录未添加...用户当然不会。
两者必须同时成功。
如果中间出了问题...减少库存...或者添加回来。

酸的性质...就是这个意思。

1 .原子性...意味着全部成功或全部失败。
不可能有中间状态。

2 一致性...是指事务执行前后...数据库的状态必须是合法的。
不能有负数...这显然是错误的。
例如,账户余额……不能为负数。

3 隔离...尚未服务的事务...其他事务无法看到。
比如A转账...B还没收到钱...C查询...他看不到A转账的钱。
隔离级别...未提交读...提交读...重复读...顺序...这些可以控制并发。
避免脏读数...不要重复读数。

4 坚持...意味着投降...即使系统崩溃...数据也不能丢失。
您必须依赖记录恢复。

事务...是数据库和文件系统...主要区别。
文件系统...可能会在写入操作过程中关闭...并且数据将被篡改。
数据库……有事务……保证数据的可靠性。

比如...银行转账...没有交易...金额已被扣除...对方还没有添加金额...金额会不会去?绝对不是。
这取决于商业担保。

《MySQL教程》...你可以看看。
具体如何实现...以及如何使用它...都会有。