这篇理论知识很丰富,需要先总结下
1.innodb支持RC和RR隔离级别实现是用的一致性视图(consistent read view)

2.事务在启动时会拍一个快照,这个快照是基于整个库的.
基于整个库的意思就是说一个事务内,整个库的修改对于该事务都是不可见的(对于快照读的情况)
如果在事务内select t表,另外的事务执行了DDL t表,根据发生时间,要嘛锁住要嘛报错(参考第六章)

3.事务是如何实现的MVCC呢?
(1)每个事务都有一个事务ID,叫做transaction id(严格递增)
(2)事务在启动时,找到已提交的最大事务ID记为up_limit_id。
(3)事务在更新一条语句时,比如id=1改为了id=2.会把id=1和该行之前的row trx_id写到undo log里,
并且在数据页上把id的值改为2,并且把修改这条语句的transaction id记在该行行头
(4)再定一个规矩,一个事务要查看一条数据时,必须先用该事务的up_limit_id与该行的transaction id做比对,
如果up_limit_id>=transaction id,那么可以看.如果up_limit_id<transaction id,则只能去undo log里去取。去undo log查找数据的时候,也需要做比对,必须up_limit_id>transaction id,才返回数据

4.什么是当前读,由于当前读都是先读后写,只能读当前的值,所以为当前读.会更新事务内的up_limit_id为该事务的transaction id

5.为什么rr能实现可重复读而rc不能,分两种情况
(1)快照读的情况下,rr不能更新事务内的up_limit_id,
而rc每次会把up_limit_id更新为快照读之前最新已提交事务的transaction id,则rc不能可重复读
(2)当前读的情况下,rr是利用record lock+gap lock来实现的,而rc没有gap,所以rc不能可重复读

08 事务到底是隔离的还是不隔离的?(转)相关推荐

  1. 08 | 事务到底是隔离的还是不隔离的

      如果是可重复读隔离级别,事务 T 启动的时候会创建一个视图 read-view,之后事务 T 执行期间,即使有其他事务修改了数据,事务 T 看到的仍然跟在启动时看到的一样.也就是说,一个在可重复读 ...

  2. 08 | 事务到底是隔离的还是不隔离的?

    一.课外知识

  3. MySQL事务原理分析(ACID特性、隔离级别、锁、MVCC、并发读异常、并发死锁以及如何避免死锁)

    MySQL事务原理分析(ACID特性.隔离级别.锁.MVCC.并发读异常.并发死锁以及如何避免死锁) 一.事务 目的 组成 特征 事务空间语句 二.ACID特性 原子性(A) 隔离性(I) 持久性(d ...

  4. Java事务的ACID属性和四种隔离级别和传播机制

    事务的ACID属性 数据库管理系统中事务(transaction)的四个特性(分析时根据首字母缩写依次解释):原子性(Atomicity).一致性(Consistency).隔离性(Isolation ...

  5. 数据库 事务 四大特性 原子性Atomic 一致性Consistent 隔离性Insulation Isolation 持久性Duration 隔离级别

    https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E5%BA%93%E4%BA%8B%E5%8A%A1/9744607?fr=aladdin 数据库事务 ...

  6. Spring事务(Transaction)的传播(propagation)属性以及隔离(isolation)级别

    目录 1 Spring事务 1.1 定义 1.1.1 事务概念 1.1.2 事务分类 1.2 声明式事务 1.2.1 @EnableTransactionManagement工作原理 1.2.2 实现 ...

  7. hystrix 源码 线程池隔离_springcloud-线程池隔离(consumer)ribbon

    1.线程池隔离原理图 2.线程池隔离 1.线程池隔离应用于consumer调用provider,正常情况下浏览器发送请求到consumer, consumer调用provider使用的是同一线程 2. ...

  8. 混部之殇-论云原生资源隔离技术之CPU隔离

    导语 混部,通常指在离线混部(也有离在线混部之说),意指通过将在线业务(通常为延迟敏感型高优先级任务)和离线任务(通常为 CPU 消耗型低优先级任务)同时混合部署在同一个节点上,以期提升节点的资源利用 ...

  9. 端口隔离port-isolate(二层隔离)

    端口隔离port-isolate(二层隔离) port-isolate mode S2720-EI.S5720-LI.S5735-L.S5735S-L.S5735S-L-M.S5720S-LI.S67 ...

最新文章

  1. 产品经理怎么样用图表传达数据信息(多图)
  2. 3 镜像仓库Harbor安装
  3. CVPR 2019 | 旷视研究院提出极轻量级年龄估计模型C3AE
  4. location 拦截所有_让它帮你干掉所有流氓软件,还你一个清静系统
  5. 从交换机浅谈安防视频会卡顿现象
  6. 关于new handler与default、delete关键字
  7. 王一博、张艺兴等多位明星起诉医美平台更美App
  8. 罗永浩要造智能音箱;苹果承认bug;微软特制AI曝光 | 极客头条
  9. linux 2.6内核进程调度,Linux2.4与Linux2.6内核调度器的比较研究
  10. 【转】vc6.0配置STLPort
  11. atitit.验证码识别step4--------图形二值化 灰度化
  12. 华为交换机路由器最新默认密码大全
  13. 详解JAVA对象实例化过程
  14. 如何获取音乐的地址链接
  15. 压力换算公斤单位换算_压力单位换算表
  16. 大沱湾水电站拦河闸坝设计
  17. 优卡仕广告一体机——商用显示设备专家
  18. 手机电池更换_红米note7pro电池更换实例注意事项
  19. Android 10 设置kernel log level
  20. 强化学习之自然梯度法

热门文章

  1. vue导出Excel(一)
  2. WebService之Java原生态支持
  3. 高考成绩查询2021年莆田市,2021年莆田高考志愿填报系统入口
  4. oracle多表查询while,oracle while的用法示例分享
  5. 判断语句_如何学好C语言判断语句?攻略if语句是第一步
  6. 又推亲儿子,苹果与国际权威机构推出 Swift 资格认证
  7. 生成树协议(STP)原理与配置PVST+实现负载均衡
  8. DOC窗口之cd命令(windows)
  9. 获得手机屏幕相关参数
  10. 北京开源人linux运维实战