博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库事务的隔离级别
阅读量:6448 次
发布时间:2019-06-23

本文共 613 字,大约阅读时间需要 2 分钟。

SQL92标准规定,数据库事务有4个隔离级别,他们为了防止以下现象:

  • 脏读取(Dirty read):一个事务读取了另一事务未提交的数据
    • A事务修改一笔数据,但仍未提交
    • B事务查询数据,却能读取该笔未提交的数据(如果A事务回滚,则此笔数据为脏数据,所以为脏读取)
    不可重复读取(Nonrepeatable read):一个事务中,先读取一批数据,后来再次读取此批数据,却发现数据有变更
    • A事务读取了一批数据
    • B事务操作或删除该批数据
    • A事务再次读取,发现该批数据被修改或删除了
  • 不存在读取(Phantom read):一个事务中,先执行一条查询,再执行一次同一条件的查询,发现结果集不一致
    • A事务根据条件查询了一批数据
    • B事务插入数据
    • A事务重新执行相同条件的查询,结果集并不一致

       

而数据库事务的隔离级别为:

隔离级别 脏读 不可重复读取 不存在读取
未提交读 Y Y Y
已提交读 N Y Y
可重复读(MySQL默认级别) N N Y
串行化 N N N

 

本人认为,基于数据库事务的原子性、一致性,脏读取可谓是重中之重,此点很容易让人理解。

不可重复读取、不存在读取,初看之下仿佛一致。实际上不可重复读取,数据库只需要保证被操作的数据的隔离性;而不存在读取,数据库则需要保证整个表的数据的隔离性。所以他们的级别不同。

 

附:

MySQL默认的隔离级别是可重复读

OracleSQL SERVER默认的隔离级别是已提交读

转载地址:http://yeowo.baihongyu.com/

你可能感兴趣的文章
linux查看登录用户及踢掉用户
查看>>
如何防止网站因改版导致权重下降?
查看>>
《伟大的计算原理》一大数据
查看>>
《UG NX8.0中文版完全自学手册》一导读
查看>>
Windows和Linux端rsync推拉同步时中文乱码解决方法
查看>>
《Spark核心技术与高级应用》——1.3节本章小结
查看>>
解决军哥lnmp一键包报错pycurl.so
查看>>
Google 搜索结果正式 AMP 化
查看>>
《树莓派Python编程入门与实战》——第2章 认识Raspbian Linux发行版 2.1 了解Linux...
查看>>
阿里感悟 (十七)- 计划和规划能力
查看>>
《Java并发编程从入门到精通》显示锁Lock和ReentrantLock
查看>>
《Servlet、JSP和Spring MVC初学指南》——1.12 小结
查看>>
《精通软件性能测试与LoadRunner最佳实战》—第2章2.5节 测试脚本编写
查看>>
《解读NoSQL》——第1章 NoSQL:明智的选择
查看>>
算力即权力
查看>>
《Nmap渗透测试指南》—第6章6.8节目标主机随机排序
查看>>
《Unity 3.x游戏开发实例》——2.8节百分之一的灵感
查看>>
阿里云前端周刊 - 往期回顾(1-3)
查看>>
《Axure RP8 网站和APP原型制作 从入门到精通》一第1章 设计过程概述1.1 设计过程...
查看>>
《嵌入式Linux应用开发完全手册》——1.2 基于ARM处理器的嵌入式Linux系统
查看>>