在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天、每周,都会留下一些脚印,就是这些创作的内容,有一种执着,就是不知为什么,如果你迷茫,不妨来瞅瞅码农的轨迹。

  • 优美的音乐节奏带你浏览这个效果的编码过程
  • 坚持每一天,是每个有理想青年的追求
  • 追寻年轻人的脚步,也许你的答案就在这里
  • 如果你迷茫 不妨来瞅瞅这里

事务就是要保证一组数据库操作,要么全部成功,要么全部失败。

在 MySQL 中,事务支持是在引擎层实现的,MySQL 原生的 MyISAM 引擎就不支持事务,所以就有了 InnoDB 引擎。

1 前言

当数据库上有多个事务同时执行的时候,就可能出现脏读(dirty read)、不可重复读 (non-repeatable read)、幻读(phantom read)的问题,为了解决这些问题,就有 了“隔离级别”的概念。

1.1 MySql 脏读

脏读指的是读到了其他事务未提交的数据,未提交意味着这些数据可能会回滚,也就是可能最终不会存到数据库中,也就是不存在的数据。读到了并一定最终存在的数据,这就是脏读。

1.2 不可重复读

不可重复读指的是在同一事务内,不同的时刻读到的同一批数据可能是不一样的,可能会受到其他事务的影响,比如其他事务改了这批数据并提交了

1.3 MySql 幻读

假设事务A对某些行的内容作了更改,但是还未提交,此时事务B插入了与事务A更改前的记录相同的记录行,并且在事务A提交之前先提交了,而这时,在事务A中查询,会发现好像刚刚的更改对于某些数据未起作用,但其实是事务B刚插入进来的,让用户感觉很魔幻,感觉出现了幻觉,这就叫幻读


为了解决这些问题,就有 了“隔离级别”的概念

2 MySql 隔离级别

隔离就是将事务操作隔离,相互之间不影响,隔离得越严实,效率就会越低,因此在业务开发中,需要在二者之间寻找一个平衡点,

SQL 标准的事务隔离级别包括:

  • 读未提交(read uncommitted)
  • 读提交(read committed)
  • 可重复读(repeatable read)
  • 串行化 (serializable )。

MySQL 的 InnoDB 引擎支持事务,其中可重复读是默认的隔离级别。

如这里我们有一张表

CREATE TABLE `t_user`(`id` BIGINT(20) NOT NULL AUTO_INCREMENT ,`id_card` VARCHAR(250) NOT NULL COMMENT '身份证' ,`u_name` VARCHAR(250) NOT NULL COMMENT '用户姓名' ,`u_age` INT DEFAULT '0' COMMENT '用户年龄 ' ,PRIMARY KEY(`id`)
) ENGINE = INNODB AUTO_INCREMENT = 39 DEFAULT CHARSET = utf8 COMMENT = '用户信息表';

然后这里有一条用户数据

现在我们来修改这个用户的年龄来说明一下不同的事务隔离(修改用户的年龄为22)。

2.1 读未提交

如下图所示,若隔离级别是“读未提交”, 则 V1 的值就是 22。这时候事务 B 虽然还没有提交,但是 结果已经被 A 看到了。因此,V2、V3 也都是 22。

2.2 读提交

若隔离级别是“读提交”,则 V1 是 20,事务 B 的更新在提交后才能被 A 看到。所以,V2 、V3 的值是 22。

2.3 可重复读

若隔离级别是“可重复读”,则 V1、V2 是 20,V3 是 22。之所以 V2 还是 20,遵循的就是这个要求:事务在执行期间看到的数据前后必须是一致的。

2.4 串行化

若隔离级别是“串行化”,则在事务 B 执行“将 20 改成 22”的时候,会被锁住。直到事务 A 提交后,事务 B 才可以继续执行。所以从 A 的角度看, V1、V2 值是 20,V3 的值 是 22。

3 事务隔离的实现

在 MySQL 中,实际上每条记录在更新的时候都会同时记录一条回滚操作,记录上的最新值,通过回滚操作,都可以得到前一个状态的值。

如在可重复读隔离模式下,假设将一个值从 1 被按顺序改成了 2、3、4,在回滚日志里面就会有类似下面的记录。


完毕

不局限于思维,不局限语言限制,才是编程的最高境界。

以小编的性格,肯定是要录制一套视频的,随后会上传

有兴趣 你可以关注一下 西瓜视频 — 早起的年轻人

MySql 你知道事务隔离是怎么回事吗?相关推荐

  1. mysql中不同事务隔离级别下数据的显示效果--转载

    事务是一组原子性的SQL查询语句,也可以被看做一个工作单元.如果数据库引擎能够成功地对数据库应用所有的查询语句,它就会执行所有查询,如果任何一条查询语句因为崩溃或其他原因而无法执行,那么所有的语句就都 ...

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

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

  3. mysql四种事务隔离级别

    mysql事务并发问题 ACID什么的就不啰嗦了.mysql多个事务并发的时候,可能会出现如下问题: 1. 更新丢失 即两个事务同时更新某一条数据,后执行的更新操作会覆盖先执行的更新操作,导致先执行的 ...

  4. MySQL事务处理与事务隔离(锁机制)

    转载:http://blog.csdn.net/qq_26525215/article/details/52146529 MySQL 事务处理 简单介绍事务处理: MySQL 事务主要用于处理操作量大 ...

  5. shell中执行某条语句失败能不能重复执行_如何理解Mysql中的事务隔离级别?

    要说清楚Mysql中的事务隔离级别,我们先从事务的定义说起.事务,是一个或一组sql语句组成的一个执行单元,这个执行单元要么全部执行,要么全部不执行.整个单独单元作为一个不可分割的整体,如果单元中某条 ...

  6. MySQL锁、事务隔离级别、MVCC机制详解、间隙锁、死锁等

    一. 简介 1. 锁定义 锁是计算机协调多个进程或线程并发访问某一资源的机制. 在数据库中,除了传统的计算资源(如CPU.RAM.I/O等)的争用以外,数据也是一种供需要用户共享的资源.如何保证数据并 ...

  7. MySQL 四种事务隔离级别详解及对比--转

    http://www.jb51.net/article/100183.htm 接的隔离级别.它的语法如下: ? 1 SET [SESSION | GLOBAL] TRANSACTION ISOLATI ...

  8. mysql 中的脏读与幻读_一文带你理解脏读,幻读,不可重复读与mysql的锁,事务隔离机制...

    首先说一下数据库事务的四大特性 1 ACID 事务的四大特性是ACID(不是"酸"....) (1) A:原子性(Atomicity) 原子性指的是事务要么完全执行,要么完全不执行 ...

  9. mysql 可重复读 悲观锁_一文带你理解脏读,幻读,不可重复读与mysql的锁,事务隔离机制...

    首先说一下数据库事务的四大特性 1 ACID 事务的四大特性是ACID(不是"酸"....) (1) A:原子性(Atomicity) 原子性指的是事务要么完全执行,要么完全不执行 ...

最新文章

  1. 8、MySQL表锁、行锁和页锁
  2. 中国医药品市场供需状况与竞争前景研究报告2022年
  3. 用tensorflow还原PSENet网络
  4. 关于selenium+java,实现部分截图功能,-针对单个元素的截图
  5. 1.2 Hive的优缺点
  6. 生成的头_Python爬虫偷懒神器!快速一键生成Python爬虫请求头
  7. ArcGIS客户端开发学习笔记(二)——XML
  8. AcWing 1054. 股票买卖
  9. 命令行基础 挂载 文件目录管理 vim编辑器
  10. java spring 连接池配置_Spring中常用的连接池配置
  11. ucore Lab2 物理内存管理
  12. gogo learning
  13. 写论文的时候,数字什么时候用大写,什么时候用罗马数字。有严格要求吗?
  14. Linux 下回收站机制
  15. 基于autojs pro的接码登录界面,演示了组件事件的挂接
  16. 管理系统类毕设(二)---学生管理系统说明
  17. #内存泄露# #valgrind# valgrind使用
  18. 阿里、京东、乐语们纷纷下注商超,到底为什么?
  19. javaSE_中文转拼音
  20. ISP_matlab

热门文章

  1. 把CNN里的乘法全部去掉会怎样?华为提出移动端部署神经网络新方法
  2. Python自学真的可以学好嘛?
  3. php中怎么应用css文件,利用PHP怎么下载CSS文件中的图片
  4. AAAI 2021 京东科技集团21篇论文
  5. PyTorch | torch.linspace()创建均分数列张量 | torch.linspace()如何使用?| torch.linspace()使用方法 | torch.linspace例子
  6. Transformer靠什么得以闯入CV界秒杀CNN?
  7. OCR常见问题(4)
  8. “一张图”解释特色小镇发展历程
  9. go 链路追踪_Go技术日报(20200911)
  10. dijkstra标号法表格_标号法求最短路径例题详解.ppt