mysql 隔离级别
2021/8/7 19:09:21
本文主要是介绍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 隔离级别的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程
- 2024-11-01部署MySQL集群学习:新手入门教程
- 2024-11-01部署MySQL集群入门:新手必读指南
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南