我们知道MySql的默认事务隔离级别是RR(可重复读),那么为什么大多数公司使用MySql时选择的事务隔离级别却是RC(读提交)呢?
一、事务隔离级别
数据库的事务隔离级别有读未提交、读提交、可重复读、串行化。其中在读未提交隔离级别下会存在脏读的问题,串行化执行效率低下,所以一般在读提交和可重复读两种隔离级别下选择。
读提交避免了脏读的现象,但没有解决幻读的问题;而可重复读解决了幻读的问题。
二、幻读
什么是幻读?
在一个事务中,前后两次查询同一范围(相同的查询SQL)的数据,返回的结果不一致,需要注意的是,不一致是指后一次查询的结果有前一次查询结果所没有的数据,也就是有新的数据被插入到这个范围中。而且幻读仅仅针对的是当前读,快照读是不会出现幻读。
看到上面对幻读的说明,一般都会有以下疑问:
两次查询的结果中的数据行是一样的,只是某些行的数据没修改了,比如某一行的字段被修改了,这种也算两次查询的结果不是完全一样,算不算幻读?
什么是当前读和快照读,两者有啥区别?
疑问1的情况不是幻读,是属于脏读,只有在读未提交隔离级别下才会发生。
为什么大多数公司采用MySql的事务隔离级别是RC?
我们知道MySql的默认事务隔离级别是RR(可重复读),那么为什么大多数公司使用MySql时选择的事务隔离级别却是RC(读提交)呢? 一、事务隔离级别 数据库的事务隔离级别有读未提交、读提交、可重复读、串行化。其中在读未提交隔离级别下会存在脏读的问题,串行
本文来自网络,不代表站长网立场,转载请注明出处:https://www.tzzz.com.cn/html/xinwen/dongtai/2021/1123/28174.html