Sql SqlServer 脏读、 不可复读和幻读的理解
sql SqlServer 不可复读和幻读的定义,是根据自己的理解写出来的,不是真正的定义,哈哈!
一、定义
1.脏读
事务A向表中插入了一条数据,此时事务A还没有提交,此时查询语句能把这条数据查询出来,这种现现象称为脏读;脏读比较好理解
2.不可重复读
一个事务A第一次读取的结果之后, 另外一个事务B更新了A事务读取的数据,A事务在第二次读取的结果和第一次读取的结果不一样这种现象称为不可重复读
3.幻读
事务A更新表里面的所有数据,这时事务B向表中插入了一条数据,这时事务A第一次的查询结果和第二次的查询结果不一致,这种现象我称为幻读。
二、延伸
造成脏读、不可复读 和幻读的根本原因是数据库锁的级别
隔离级别 | 脏读(Dirty read) | 不可重复读(Non-repeatable read) | 幻读(Phantom read) |
READ_UNCOMMITED | 允许 | 允许 | 允许 |
READ_COMMITED | 不允许 | 允许 | 允许 |
REPEATABLE_READ | 不允许 | 不允许 | 允许 |
SERIALIZBLE | 不允许 | 不允许 | 不允许 |
MySQL的默认事务隔离级别是REPEATABLE_READ,ORACLE、SQL Server、DB2和PostgreSQL的默认事务隔离级别是READ_COMMITED。
参考:http://blog.csdn.net/v123411739/article/details/39298127
https://my.oschina.net/feichexia/blog/202520
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?