全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

既然MySQL有事物隔离性,那为什么还会产生脏读?

发布时间:2023-10-13 18:41:25
发布人:xqq

一、既然MySQL有事物隔离性,那为什么还会产生脏读

这个事情不能简单的一概而论,还得结合锁和MVCC相关的知识来分析

一个select操作:

如果不加锁(普通的select等),称为快照读,读取的是MVCC版本链里的快照版本(至于读哪一版本的数据,就得看隔离级别了)

如果加了锁(如select for update等),称为当前读,读取的是最新版本(也就是别的事务提交的版本)

所以这样就很清晰了:

在事务隔离级别为读未提交的情况下,事务B读取到的可能是事务A未提交的存在于版本链里的数据,这样就是脏读了。

有人可能是数据不是加锁了吗,为啥还能读?我读取的是版本链里的数据,你加锁是加在最新落库的数据表里的表记录,跟我有什么关系?

所以最终结果就很清楚了,并不是一级封锁协议不能避免度脏数据,想下面这两周情况就不会发生脏读:

1)在非读未提交(读已提交、可重复读、串行化)隔离别下,不会出现脏读

2)在select加锁的情况下,不管什么级别,也不会出现脏读

延伸阅读:

二、Navicat是什么

Navicat是一套快速、可靠和全面的数据库管理工具,专门用于简化数据库管理和降低管理成本。Navicat图形界面直观,提供简便的管理方法,设计和操作MySQL、MariaDB、SQL Server、Oracle、PostgreSQL和SQLite的数据。

Navicat提供一个直观和设计完善的用户界面,用于创建、修改和管理资料库的所有对象,例如表、视图、函数或过程、索引、触发器和序列。我们的表设计器帮助用户创建和修改数据库的表,让设置高级选项,如关系、限制、触发器和更多。

使用Navicat浏览和修改数据,插入、编辑、删除数据或复制和粘贴记录到数据表形式的数据编辑器,Navicat将运行相应的命令(例如INSERT或UPDATE),免除写复杂的SQL。广泛的数据编辑工具令编辑工作更为方便,例如外键查找、set/enum选择器和记录筛选。

#it技术干货

相关文章

怎样系统全面的分析oracle的AWR报告?

怎样系统全面的分析oracle的AWR报告?

2023-10-13
MySQL 在数据库市场到底处于什么样的地位?

MySQL 在数据库市场到底处于什么样的地位?

2023-10-13
一般的单机版软件(不联网)用什么存储数据呢?

一般的单机版软件(不联网)用什么存储数据呢?

2023-10-13
mysql怎么让两个表中的两个字段不能重复?

mysql怎么让两个表中的两个字段不能重复?

2023-10-13

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取