1. 脏读:

所谓脏读,即“无效事务读出”。也就是说,一个事务读取到另一个事务没有提交的数据。我们举个例子:事务A1修改了一行数据,但是还没有提交(还没写入硬盘),这时候事务A2读取了被事务A1修改后的数据,之后事务T1因为一些原因Rollback回滚了,那么事务T2读取的数据就是脏的。

那么它的解决办法是把数据库的事务隔离级别调整到READ_COMMITTED。

2. 不可重复读:

不可重复读指的是同一个事务, 相同的查询过程读取出了不同的结果。比如说,事务T1读取某一数据,事务T2读取并修改了该数据,T1为了对读取值进行检验而再次读取该数据,便得到了不同的结果。

那么他的解决办法是吧数据库的事务隔离级别调整到REPEATABLE_READ。

3. 幻读

幻读指的是事务不独立执行的时候,可能出现的错误。比如:A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样。这就叫幻读。

它的解决办法是把数据库的事务隔离级别调整到SERIALIZABLE_READ。

那么数据库的隔离级别到底有哪几种呢?一般的数据库隔离级别有四种:

未授权读取

也称为读未提交(Read Uncommitted):允许脏读取,但不允许更新丢失。如果一个事务已经开始写数据,则另外一个事务则不允许同时进行写操作,但允许其他事务读此行数据。该隔离级别可以通过“排他写锁”实现。

授权读取

也称为读提交(Read Committed):允许不可重复读取,但不允许脏读取。读取数据的事务允许其他事务继续访问该行数据,但是未提交的写事务将会禁止其他事务访问该行。可以通过“瞬间共享读锁”和“排他写锁”实现。

可重复读取(Repeatable Read)

禁止不可重复读取和脏读取,但是有时可能出现幻读数据。读取数据的事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务。可以通过“共享读锁”和“排他写锁”实现。

序列化(Serializable):

提供严格的事务隔离。它要求事务序列化执行,事务只能一个接着一个地执行,不能并发执行。仅仅通过“行级锁”是无法实现事务序列化的,必须通过其他机制保证新插入的数据不会被刚执行查询操作的事务访问到。

隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。对于多数应用程序,可以优先考虑把数据库系统的隔离级别设为Read Committed。它能够避免脏读取,而且具有较好的并发性能。尽管它会导致不可重复读、幻读和第二类丢失更新这些并发问题,在可能出现这类问题的个别场合,可以由应用程序采用悲观锁或乐观锁来控制。

数据库脏读,不可重复度,幻读以及对应的事务隔离级别相关推荐

  1. mysql 默认事务隔离级别_一文读懂MySQL的事务隔离级别及MVCC机制

    回顾前文: <一文学会MySQL的explain工具> <一文读懂MySQL的索引结构及查询优化> (同时再次强调,这几篇关于MySQL的探究都是基于5.7版本,相关总结与结论 ...

  2. 菊长说丨一文读懂MySQL4种事务隔离级别

    经常提到数据库的事务,那你知道数据库还有事务隔离的说法吗,事务隔离还有隔离级别,那什么是事务隔离,隔离级别又是什么呢?今天我们就找菊长去,请他帮大家梳理一下这些各具特色的事务隔离级别,咱走着~~~ 点 ...

  3. 概述MySQL数据库---事务隔离级别

    同一个应用程序中的多个事务或不同应用程序中的多个事务在同一个数据集上并发执行时, 可能会出现许多意外的问题,事务并发处理可能引起的问题可分为如下三种类型: 脏读(Drity Read): 已知有两个事 ...

  4. mysql数据库事务隔离级别演示

    mysql数据库事务隔离级别演示 关键词: 一.基本概念 二.事务的四个特性(ACID) 三.事务的用法 3.1 相关命令 3.2 使用步骤 四.数据库的隔离级别 五.示例演示(每组事务结束手动com ...

  5. 数据库(三范式,视图,事务隔离级别,存储过程)

    MySQL设计三范式的理解 目前关系数据库有六种范式: 第一范式(1NF).第二范式(2NF).第三范式(3NF).巴斯-科德范式(BCNF).第四范式(4NF)和第五范式(5NF,又称完美范式).满 ...

  6. 【赵强老师】事务隔离级别与脏读

    数据库事务的隔离级别有4种,由低到高分别为Read uncommitted .Read committed .Repeatable read .Serializable .而且,在事务的并发操作中可能 ...

  7. 事务隔离级别中脏读、不可重复读,幻读问题的解决

    脏读的问题 窗口1 –查询账户表 select from account; –设置隔离级别为read uncommitted set global transaction isolation leve ...

  8. MySQL数据库中,在读已提交和可重复读这两个不同事务隔离级别下幻读的区别

    目 录 1. 前 言 1.1 并发事务存在的问题 1.2 事务的隔离级别 1.3 快照读和当前读 2. 不同事务隔离级别下幻读的区别 2.1 读已提交下的幻读 2.2 可重复读下的幻读 2.2.1 情 ...

  9. MySQL不同事务隔离级别对读数异常(脏读等)的拦截情况

    一直以来,对事务的隔离级别的理解一直有点模糊,今天借此文对这一块的知识点进行梳理,并配合相关实验进行说明,以期加深理解.知识点部分的文字采集于网络,文末附上参考链接,感谢大神的贡献! 在说明举例事务隔 ...

最新文章

  1. Python 代码性能优化技巧
  2. 你的眼睛一天内经历几万次“失明”,只是为了让你看清世界
  3. 复数类完整实现 + 四则运算符重载
  4. 真正的 Tornado 异步非阻塞
  5. Linux下C语言编程-进程的创建
  6. md5碰撞Java_java现在MD5加密不安全了吗?
  7. Twitter Snowflake
  8. CentOSserverMysql主从复制集群结构
  9. 使用junit做其他事情
  10. qq数据泄露_真良心,腾讯这个app竟然能查账号泄露
  11. Java LinkedList getFirst()方法与示例
  12. linux 安装启动ssh服务
  13. eclipse 背景颜色
  14. windows环境下kafka源代码开发环境搭建
  15. linux python2.7 sqlite3_为Python安装准备_tkinter和sqlite3(无管理员权限)
  16. 2021年N1叉车司机免费试题及N1叉车司机模拟试题
  17. Prescan 坡道ramp 应用
  18. EOJ 2527 Fj haozi【dfs】
  19. 甬台温、温福铁路动车组时刻表
  20. vb.net 同时给多个属性赋值_C++程序入门之——赋值操作符

热门文章

  1. 2020年python工资一般多少-2020届毕业生874万,这个岗位月薪2万竟无人问津...
  2. python利器-Python 数据可视化利器
  3. python数据分析-Python数据分析:可视化
  4. python可以自学编程吗-Python入门学习难吗,新手如何学习
  5. 55岁自学python编程-热门专业三年一换?奥鹏教育解析编程还能火多久
  6. 逆置单链表c语言程序,逆置单链表C语言
  7. java 编码格式 utf 8_关于java生成UTF-8编码格式文件的诡异问题
  8. yolov3模型识别不出训练图片_【AI论技】YOLOv3在标的物资产实时管理中的应用
  9. java简单增删改查_JAVA JDBC 简单的增删改查
  10. vue 实现表格循环滚动 vue-seamless-scroll插件的安装与使用