Mysql的隔离级别有四个

1、读未提交

2、读提交

3、可重复读 RR

4、串行读

隔离的实现

每次修改对应一个事务ID:row trx id,还对应一个undo log,因此undo log和row trx id是一一对应的。

当我们开始一个事务的时候,会生成一个事务的snap shot,将当前正在进行的没有提交的事务id存放到一个数组中。这个数组是静态的,可称之为视图。致性InnoDB就是用这个数组来实现隔离的,从而保证了一致性读。

数组中最大的ID是自己,表示高水位;最小的是事务id是低水位。

对于可重复读,小于低水位的数据说明在创建事务之前就已经提交,因此对于本事务是可见的;

大于高水位的数据是不可见的,是本次事务创建后才创建的事务修改的数据,因此对于本事务是不可见的;

如果处于低水位和高水位之前的事务修改的数据,则要看该事务id是否落在了视图创建是的事务数组中,如果落在了里面,表示虽然该事务早于我之前创建,但是晚于我事务启动时提交,因此是不可见的。如果没有落在事务id数组中,那么表示本事务创建时,该事务已经提交,因此是可见的。

以上几个原则,保证了一致性读。

更新操作的可见性

数据更新时,必须是在当前的最新的数据上修改,否则某些事务的更新就会被覆盖。因此,事务中的更新操作必须是当前读。这就和我们上面说的一致性读产生了矛盾,或者说是有别于一致性读。此时就要引入行锁,当数据修改,但没有提交时,行锁是一直持有的。因此其他事务的更新操作是会被阻塞的。因此,行锁保证了当前读,也就保证了数据的修改不会被覆盖。

mysql如何实现隔离性_Mysql的隔离以及实现相关推荐

  1. mysql 事务隔离规范_MySQL事务隔离级别以及脏读、幻读、不可重复读示例

    事务的隔离性 MySQL是一个客户端/服务器架构的软件,对于同一个服务器来说,可以有若干个客户端与之连接,每个客户端与服务器连接上之后,就可以称之为一个会话(Session).每个客户端都可以在自己的 ...

  2. mysql 默认事务隔离级别_MySQL 事务隔离级别详解

    个人公众号『码农札记』,欢迎关注,查看更多精彩文章. 简介: MySQL的事务隔离级别一共有四个,分别是读未提交.读已提交.可重复读以及可串行化. 四个特性ACID 原子性 (Atomicity) 事 ...

  3. mysql隔离性和线性隔离_MySQL--事务,隔离性和隔离级别

    事务 事务就是一组数据库操作,要么全部执行成功,要么全部执行失败,在MySQL中,事务是依靠存储引擎层实现的. ACID(Atomicity,Consistency,Isolation,Durabil ...

  4. mysql 并没有幻读_MySQL默认隔离级别REPEATABLE-READ并没有解决幻读问题

    刷脉脉,发现一个帖子讨论幻读问题: https://maimai.cn/web/gossip_detail?src=app&webid=eyJhbGciOiJIUzI1NiIsInR5cCI6 ...

  5. 【MySQL】事务及其隔离性/隔离级别

    目录 一.事务的概念 1.事务的四种特性 2.事务的作用 3.存储引擎对事务的支持 4.事务的提交方式 二.事务的启动.回滚与提交 1.准备工作:调整MySQL的默认隔离级别为最低/创建测试表 2.事 ...

  6. spring 事务隔离级别和传播行为_Spring事务传播性与隔离性实战

    一.事务传播性 1.1 什么是事务的传播性 事务的传播性一般在事务嵌套时候使用,比如在事务A里面调用了另外一个使用事务的方法,那么这俩个事务是各自作为独立的事务执行提交,还是内层的事务合并到外层的事务 ...

  7. java spring 事务传播_实战Spring事务传播性与隔离性

    一.事务传播性 1.1 什么是事务的传播性 事务的传播性一般在事务嵌套时候使用,比如在事务A里面调用了另外一个使用事务的方法,那么这俩个事务是各自作为独立的事务执行提交,还是内层的事务合并到外层的事务 ...

  8. java 类隔离_Java类装载体系中的隔离性

    正文 Java中类的查找与装载出现的问题总是会时不时出现在Java程序员面前,这并 不是什么丢脸的事情,相信没有一个Java程序员没遇到过ClassNotException,因此不要为被人瞅见自己也犯 ...

  9. mysql数据锁的类型_MySQL数据库锁类型

    锁概念: 当高并发访问同一个资源时,可能会导致数据不一致,需要一种机制将用户访问数据的顺序进行规范化,以保证数据库数据的一致性.锁就是其中的一种机制. 一个栗子 :以买火车票为例,火车票可面向广大消费 ...

最新文章

  1. 【组队学习】【32期】SQL编程语言
  2. 如何做好工程监理控制工作?
  3. baidumap vue 判断范围_百度地图 vue-baidu-map
  4. Google游览器快捷键学习
  5. python print不换行输出_python中print如何不换行输出
  6. possible SYN flooding on port 3690 Sending cookies
  7. win10中VM15内centos7的安装
  8. could not find a getter for ... in class ... 异常的解决
  9. 239.滑动窗口的最大值
  10. Centos7 下安装tomcat7
  11. 在proteus软件80C51芯片隐藏电源接口VCC
  12. 微信小程序展示弹窗的方式
  13. 《基于 DirectX11 的 3D 图形程序设计案例教程》学习一 HelloWorld
  14. Python:忽如一夜春风来,千树万树梨花开
  15. mysql只读模式_mysql 只读模式详解
  16. Head First 系列图书资源-PDF网盘下载(更新中)
  17. Linux命令之pwd
  18. CATIA.P3.V5R21兼容版安装包和安装视频分享,CATIA新手必备
  19. 贷款行业怎样运用运营商数据找精准客户?
  20. 国产无线充电宝哪个牌子好?国产无线充电宝品牌排行

热门文章

  1. BPM报销流程开发示例
  2. 一、HALCON学习笔记(容器液位缺陷检测)
  3. 什么是闭频繁项集 closed patterns ?
  4. 【云原生】coding部署docker镜像到远程服务器
  5. 关于一名Java程序员如何备考教师资格证----高级中学信息技术学科
  6. 什么是pdi检测_4S店提车,PDI的检测是个什么鬼?
  7. triplus在matlab字函数,[理学]第7章 MATLAB在信号处理中的应用.ppt
  8. wdatepicker设置时间范围_外卖配送范围由谁决定?这三个划分原则请遵循
  9. DHCP抓包-Wireshark分析
  10. 2019南科大计算机系夏令营笔试面试