前面我们说过,要获得最高的事务隔离性,可以采取序列化/串行的方式,代价是严重影响系统处理事务的吞吐量。就好像数据库是个多核CPU,事务串行后,那么意味着我们总是在使用单核,没办法发挥多核CPU的并行威力。

基于以上这个问题,大多数的数据库实现都为使用者提供了多个事务隔离级别;

Mysql提供的事务隔离级别有: Read Uncommitted,Read Committed,Repeatable Read,Serializable,级别依次递增。

Mysql默认的事务隔离级别是Repeatable Read

现在学习Read Uncommitted这种数据库隔离级别:

Read Uncommitted顾名思义,就是读未提交,也就是说事务所作的修改在未提交前,其他并发事务是可以读到的。下面我们来演示一下这个过程:

1. 假设现在有个学生小明连接到数据库去读取自己本学期的成绩,它设置session(当前连接)的事务隔离级别为Read Uncommitted:

xiaoming> select @@tx_isolation;
+-----------------+
| @@tx_isolation  |
+-----------------+
| REPEATABLE-READ |
+-----------------+
1 row in set (0.00 sec)xiaoming> set session transaction isolation level read uncommitted;
Query OK, 0 rows affected (0.00 sec)xiaoming> select @@tx_isolation;
+------------------+
| @@tx_isolation   |
+------------------+
| READ-UNCOMMITTED |
+------------------+
1 row in set (0.00 sec)

2. 就在这个时候,小明的班主任王老师也连接了数据库去登记学生本学期的成绩:

mr.wang> begin;
Query OK, 0 rows affected (0.00 sec)mr.wang> insert into scores(name,score) values ("xiaoming", 59);
Query OK, 1 row affected (0.00 sec)

3. 当王老师还没有提交事务时,小明刚好开始查询自己的成绩,结果他查到自己考了59分,他伤心的要死:

xiaoming> begin;
Query OK, 0 rows affected (0.00 sec)xiaoming> select * from scores where name = 'xiaoming';
+----+----------+-------+
| id | name     | score |
+----+----------+-------+
|  1 | xiaoming |    59 |
+----+----------+-------+
1 row in set (0.00 sec)

4. 小明查成绩之后,王老师发现自己登错了成绩,其实小明考了69分,于是他回滚了当前事务, 并重新录入了小明的正确成绩:

mr.wang> rollback;
Query OK, 0 rows affected (0.00 sec)mr.wang> begin;
Query OK, 0 rows affected (0.00 sec)mr.wang> insert into scores(name,score) values ("xiaoming", 69);
Query OK, 1 row affected (0.00 sec)mr.wang> commit;
Query OK, 0 rows affected (0.00 sec)

5. 小明也没有复查成绩,因此整个寒假都过的很不开心,毕竟自己没有"及格"!

通过上述场景,我们发现,Read Uncommitted这个最低的事务隔离级别存在以下这些问题:

a. 允许脏读(dirty reads),就像上面王老师录入的错误成绩(脏数据)被小明读到一样

4. 事务隔离级别之Read Uncommitted相关推荐

  1. MySQL(InnoDB剖析):43---事务之(事务隔离级别:READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE)

    ISO和ANIS SQL标准指定了4种事务隔离级别的标准,但是很少有数据库厂商循环这些标准.例如Oracle数据库就不支持READ UNCOMMITTED和REPEATABLE READ SQL标准定 ...

  2. MySQL数据库——事务隔离级别Read uncommitted(一)

    文章目录 一.设置事务隔离级别 二.事务问题 1.脏读 (1) 场景 (2) 分析 (3) 模拟演示 2.不可重复读 (1)场景 (2)分析 (对比)(1*) 场景 (2*)分析 (3)模拟演示 3. ...

  3. mysql事务隔离级别与设置

    mysql数据库,当且仅当引擎是InnoDB,才支持事务: 1.隔离级别 事务的隔离级别分为:未提交读(read uncommitted).已提交读(read committed).可重复读(repe ...

  4. 事务,Oracle,MySQL及Spring事务隔离级别

    一.什么是事务:  事务逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败. 二.事务特性(4种):  原子性 (atomicity):强调事务的不可分割: 一致性 (consi ...

  5. MySQL事务隔离级别和Spring事务关系介绍

    事务隔离级别介绍 隔离级别 脏读 不可重复读 幻读 未提交读(Read uncommitted) 可能 可能 可能 已提交读(Read committed) 不可能 可能 可能 可重复读(Repeat ...

  6. 数据库事务隔离级别+Spring 声明性事务隔离级别

    数据库事务隔离级别 数据库提供了四种事务隔离级别, 不同的隔离级别采用不同的锁类开来实现. 在四种隔离级别中, Serializable的级别最高, Read Uncommited级别最低. 大多数数 ...

  7. 3分钟搞懂MySQL事务隔离级别及SET TRANSACTION影响事务

    导读:MySQL支持SQL:1992标准中的所有事务隔离级别,使用SET TRANSACTION来设置不同的事务隔离级别或访问模式,我们一起实战下它的效果. 我们都知道,MySQL的内置引擎中只有In ...

  8. MySQL事务隔离级别及场景测试

    查询事务隔离级别: select @@tx_isolation 查看系统当前隔离级别: select @@global.tx_isolation MySQL支持四种事务隔离级别: {READ UNCO ...

  9. mysql的事务隔离级别

    事务的四大特性(ACID): 1.原子性(atomicity):一个事务必须视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的 ...

最新文章

  1. vs发布免安装文件_戒掉PC,免pc开发,cloud ide and debug设想
  2. 学会使用 diff 和 patch 命令协同开发
  3. No resource identifier found for attribute 'showAsAction' in package 'android'
  4. Axure RP pro 6.5 密钥
  5. 第二章:2.6 LTI系统特性与单位冲击信号的关系
  6. ARCHLinux SETUP WITH FDISK
  7. java json.stringify_JavaScript如何实现JSON.stringify
  8. django-ckeditor表情包修改
  9. LeetCode 1389. 按既定顺序创建目标数组
  10. html动态日出,日出日落及方位角计算html
  11. jsp数组自动转换html,jsp页面将选中的复选框转数组传到后台
  12. Python Error: “ImportError: No module named six”,用自动安装解决依赖问题
  13. 文件的读写学习笔记和我的第一个网页
  14. python storm连接mysql_python ORM storm中的复合外键引用
  15. java list转成map对象_在Java 8中将List转换为Map对象方法
  16. python第三方库:chardet字符编码检测和乱码处理
  17. 【FFT/IDFT】高效算法
  18. 【JAVA工具类】金额与汉字大小写的转换 金额转换
  19. 小白入门spring——IOC依赖注入
  20. python末尾加空格_Python3基础 print(,end=) 输出内容的末尾加入空格

热门文章

  1. virtualbox mac (免费) 安装 centOS8 (含支持屏幕分辨率设置的VirtualBox增强功能安装)
  2. 量子隐形传态 Quantum Teleportation
  3. 2017/9/11操盘手项目遇到的问题:遇到异常不回滚
  4. 读格林斯潘回忆录-1
  5. 数据结构---归并排序和外部排序
  6. paddle 模型与层---- 笔记(边学边练)
  7. JavaScript+html实现倒计时
  8. 让我我们以比尔.盖茨为榜样
  9. 无法安装更新计算机启动不了,“windows 无法更新计算机的启动配置。安装无法继续”这样解决...
  10. HSV分量直方图显示