既然MySQL有事物隔离性,那为什么还会产生脏读?
一、既然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选择器和记录筛选。
相关推荐HOT
更多>>linux命令行启动服务?
Linux开机启动chkconfig命令详解1、第一行告诉chkconfig缺省启动的运行级以及启动 和停止的优先级。如果某服务缺省不在任何运行级启动,那么使...详情>>
2023-10-21 23:54:28linux命令psw6?
linux命令大全1、Linux命令大全以下是一些常用的 Linux 命令:ls:列出当前目录下的文件和目录。cd:改变当前目录。pwd:显示当前目录的路径。m...详情>>
2023-10-21 22:31:23linux显示命令位置?
Linux中显示一个文件最后几行的命令是什么?tail -n 20 filename\x0d\x0a说明:显示filename最后20行。\x0d\x0a\x0d\x0aLinux下tail命令的使详情>>
2023-10-21 20:28:50linux重启王卡命令?
linux重启命令Linux的五个重启命令为:shutdown、poweroff、init、reboot、halt。shutdown shutdown命令可以安全地将系统关机。有些用户会使用...详情>>
2023-10-21 19:27:14