mysql为什么使用可重复读(repeatableread)为默认隔离级

说白了,MySQL的隔离级别就是以不同的价格来换取数据的一致性。
首先,最重要的“重复阅读”是默认设置。
它通过创建一致的视图来防止误读和不可重复读取,但它留下了潜在的误读风险——去年我们运行了一个电子商务项目,因为我们没有注意到误读,导致订单计数统计出现错误。
还有一点,“序列化”可以解决所有问题,但去年测试时我们发现,随着并发数的增加,系统会像库存车一样卡住,无法支撑5 000个月活跃用户后系统就会崩溃。
还有另一个重要的细节。
例如,虽然发送读取可以防止错误读取,但它不能用在金融系统中,因为两个转账请求可能会显示不同的余额。
说实话,这很令人困惑。
很多人没有意识到虚拟阅读中承诺阅读和重复阅读之间存在着巨大的差异。
起初我以为这三个级别没有太大区别,但后来我意识到这是错误的。
重要的是要看看业务场景是否需要容忍由于锁定而导致的性能损失。
建议在测试环境中使用真实的并发压力测试,而不是仅仅阅读官方文档。

MySQL事务中四种隔离级别

哈,我跟大家简单聊聊这四种MySQL事务隔离级别,就像聊天一样。

首先说“休闲阅读”。
到了这个层次,就好像两个人在聊天一样。
A说了些什么,还没等他决定要不要说,B就听到了。
结果,A后来改变了主意,B听到的可能就是A没有说的话。
这就是“脏读”。
该级别的绝缘性最低。
它就像一个半成品,很少在实际应用中使用。

还有“les commit”,就好像A说了些什么,B听到了,但是A说完之后,B就不再想听A说的任何话了。
这样,B听到的就是A已经决定说的话,不会因为A后续的改变而改变。
但如果A和B之间有人打断,B听到的可能会不同。
这就是“不可重复阅读”。

然后是“重复读”,就像A和B在同一个房间,A说了一句话,B听到了,然后A又重复了一遍,B也重复了一遍。
不管A说多少次,B总是记得。
这样,即使有人中途打断,B也能确保他记得A说的话。

最后还有“可串行化”,就像A和B在一个封闭的房间里,A说话,B听到,然后A又说话,B又说话,就像一前一后地排队一样。
这样,无论外面发生什么,A和B都会只专注于自己的谈话,而不会受到外界的影响。

一般来说,隔离级别越高,就像一个更封闭的房间,数据一致性越好,但是就像一个更封闭的房间,人进出会很麻烦,也就是并发性能会更低。
因此,我们要根据业务需求来选择。
比如MySQL的标准是“可重复读”,既保证了数据的一致性,又兼顾了性能。
而“可串行化”只用于特别需要数据一致性且并发量不高的场景。
无论哪种方式,都由您决定哪一种适合您。
我还在想这个问题。

mysql默认的事物隔离级别

MySQL 的默认隔离级别是可重复读。
老实说,这非常重要。
使用它的人越多,它就会被更好地理解。

未提交阅读?这些不受支持。
在你完成任务之前,你可以看到其他人的数据;有问题。
例如,如果事务 A 更改了数据。
事务B将直接读取它。
如果交易A被撤销;事务B将读取垃圾数据。
这就是所谓的脏读。

最好提交并阅读。
某些内容必须先完成并提交,然后您才能看到它。
我看不懂脏话,但我也不能一遍又一遍地读它们。
你是什​​么意思?同样的事情读两遍会得到不同的结果。
例如,当您第一次读取数据时;有人更改了数据并再次发送。
如果你再读一遍,结果就会改变。
相当混乱。

重复性是原文。
保证同一件事读两遍,结果是一样的。
有多成功?在活动开始时合影留念。
无论以后它如何变化,我都会继续阅读旧照片。
脏消息和重复未读消息消失。
然而,可能会出现奇特的读数。
什么是幻读?有一些类,当你读取一组数据时,有人添加新数据并提交并再次读取。
MySQL使用这个“幻影”索引锁用于防止读取行。

可序列化是最高级别。
你是什​​么意思?一旦一个完成,另一个就可以开始。
完全孤立。
但同样性能直接下降。
有时,如果你别无选择,就选择这个。

那么MySQL为什么选择重复读取呢?老实说,这个在一致性和一致性之间找到了平衡。
适合很多用户。