mysql的4种事务隔离级别

博客园里有篇文章谈到MysqL的4种事务隔离级别,哪4种?

1、未提交读(read uncommitted)
2、已提交读(read committed)
3、可重复读(repeatable read)
4、串行化(serializable)

文章解说了为何oracle、sql server认的隔离级别都是“已提交读”,而MysqL认是“可重复读”。但可惜这4种事务隔离级别有什么区别,却说的不够清楚。或者说,我没能读懂,又到网上搜了一下,做个笔记。

1、未提交读
也称为脏读吧。甲乙两人一起编辑同一份表,事务尚未提交,但彼此已经可以看到修改的结果。

2、已提交读
只有事务提交了,别人才能看到自己的修改结果。

3、可重复读
一个事务中,一份数据,不管读多少遍,结果都是一样的。
这比“已提交读”更严格一点了。甲开启了一个事务,在事务中对一份数据前后读了2遍,期间乙对该数据进行了编辑并提交,“已提交读”级别中,前后读取的结果会不一样;而“可重复读”级别里,一个事务里面,甲看到的都不变。
不过,这是好事还是坏事,很难说。如果是我,我选“已提交读”。可重复读,典型的两耳不闻窗外事,真实数据都已经变了,你还关在自己的事务里爽,可能会误导;事务完了以后,对真实的结果可能还会大吃一斤。


2022.08.24
可重复读在事务期间,是锁定记录的,不会出现该记录被别的事务修改的情况。

但可重复读无法锁定关联记录。假如有个统计,需要用到A、B记录,则有可能出现事务期间,A锁定,但B记录被别的事务修改的情况,则统计出来的结果,可能跟实际数据有出入。

解决这个问题,只能进一步,使用串行化。就看有没有这个必要性。


4、串行化
这就简单粗暴了,本来并行的数据库,只能排队进行操作了。不管读也好,修改也好,都得排队。结果当然绝对正确,但这效率,嗯。

参考资料:
互联网项目中mysql应该选什么事务隔离级别

五分钟搞清楚MySQL事务隔离级别

相关文章

显卡天梯图2024最新版,显卡是电脑进行图形处理的重要设备,...
初始化电脑时出现问题怎么办,可以使用win系统的安装介质,连...
todesk远程开机怎么设置,两台电脑要在同一局域网内,然后需...
油猴谷歌插件怎么安装,可以通过谷歌应用商店进行安装,需要...
虚拟内存这个名词想必很多人都听说过,我们在使用电脑的时候...