mysql 隔离级别

隔离级别  

  mysql的事务隔离级别有四种,分别是读未提交、读已提交、可重复读、序列化,不同的隔离级别下会产生脏读、幻读、不可重复读等相关问题,因此在选择隔离级别的时候要根据应用场景来决定,使用合适的隔离级别:

  READ UNCOMMITTED(未提交读),事务中的修改,即使没有提交,对其他事务也是可见的。事务能够读取未提交的数据,这种情况称为脏读
  READ COMMITTED(读已提交),一个事务开始时,只能“看见”已经提交的事务所做的修改。有时候提交读也叫不可重复读(nonrepeatable read)
  REPEATABLE READ(可重复读),同一个事务中,多次读取同样记录的结果是一致的。mysql默认的隔离级别
       SERIALIZABLE(可串行化),最高隔离级别,完全服从ACID的隔离级别,读取每一行数据都加上锁,可能导致大量的超时和锁争用问题,一般不使用

  各种隔离级别和数据库异常情况对应情况如下:

隔离级别 脏读可能性 不可重复读可能性 幻读可能性 加锁度
READ UNCOMMITTED Y Y Y N
READ COMMITTED N Y Y N
REPEATABLE READ N N Y N
SERIALIZABLE N N N Y

 

  脏读(Dirty Read):事务可以读取未提交的数据
  不可重复读(nonrepeatable read)也叫虚读:前后读取的记录数可能不一致。事务A在第一次读取记录为5,然后事务B执行了更改为10.事务A在第二次读取记录为10.
  幻读(Phantom Read):当某个事务A在读取某个范围内的记录时,另外一个事务B又在该范围插入新的记录,当事务A再次读取该范围的记录时,会产生幻行。

脏读(Dirty Read):事务可以读取未提交的数据
不可重复读(nonrepeatable read),也叫虚读:前后读取的记录数可能不一致。事务A在第一次读取记录文章阅读数位5,然后事务B执行了更改,把阅读数改为10.事务A在第二次读取文章阅读数为10.
幻读(Phantom Read):当某个事务A在读取某个范围内的记录时,另外一个事务B又在该范围插入新的记录,当事务A再次读取该范围的记录时,会产生幻行。
————————————————
版权声明:本文为CSDN博主「清风169」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_37909391/article/details/105691874

mysql 隔离级别

上一篇:oracle 修改用户密码


下一篇:ASP.NET Core下FreeSql的仓储事务