- 主页 > 生活百科 > >
MySQL 整体架构与 SQL 执行原理( 五 )
通过增加系统版本号 , 每次事务操作 , 会比较系统版本号 InnoDB为每行记录添加了一个版本号(系统版本号) , 每当修改数据时 , 版本号加一 。在读取事务开始时 , 系统会给事务一个当前版本号 , 事务会读取版本号<=当前版本号的数据 , 这时就算另一个事务插入一个数据 , 并立马提交 , 新插入这条数据的版本号会比读取事务的版本号高 , 因此读取事务读的数据还是不会变 。 MVCC 是什么? 基于CAS(Compare-and-swap) 有条件更新(Conditional Update) 通过undo log 来实现 原子性是事务的基本特性 , 保证了事务中的操作是不可拆分的整体 , 那么原子性是如何实现的呢?事务的原子性表现的两个方面: 通过redo log 来实现 事务提交失败 , 那么事务中的操作都失败 , 这个是通过数据库的撤销操作日志来保证的 , 也称之为undo log 。 事务提交成功保证事务中的操作都会完成 。1、是正确执行完事务 , 没有出现任何问题;2、是事务提交成功但是出异常 , 数据库恢复之后 , 提交完成的事务会保证数据库完成该事物的操作 。对于第一种正常情况不予讨论 , 因为不存在 异常情况 , 那么第2种实际上是和上文说的持久性是相关联的 , 而这个是基于重做日志(redo log)来保证提交完成的事务在异常情况下保证数据操作能够进行: 事务提交成功时 , 那么事务中的操作总会完成 事务提交失败 , 那么事务中的操作都失败 原子性 一致性 隔离性 Undo原理 与 Redo原理 和Undo Log相反 , Redo Log记录的是新数据的备份 。在事务提交前 , 只要将Redo Log持久化即可 , 不需要将数据持久化 。当系统崩溃时 , 虽然数据没有持久化 , 但是Redo Log已经持久化 。系统可以根据Redo Log的内容 , 将所有数据恢复到最新的状态 。 在操作任何数据之前 , 首先将数据备份到一个地方(这个存储数据备份的地方称为Undo Log) 。然后进行数据的修改 。如果出现了错误或者用户执行了ROLLBACK语句 , 系统可以利用Undo Log中的备份将数据恢复到事务开始之前的状态 。 Undo原理:(备份旧数据) Redo原理:(保存最新数据)
推荐阅读
-
#德马库斯·考辛斯#再见,湖人!恭喜考辛斯!终于有球队肯要你了!
-
-
电动自行车:交钱骑走,过户免验车?超标电动自行车,依然在挂牌卖
-
-
【拜仁慕尼黑】5500万! 拜仁中场司令官拒绝续约将回巴萨, 拜仁加钱买本土第一前腰
-
央视网@民航局:目前国际航班总量维持在每周不超过134班
-
环球网|菅义伟就职讲话:新冠疫情是最优先问题,将继承安倍政策
-
国新办:截至今年7月全国登记注册市场主体1.32亿户
-
四川一精神病人电梯内砍死8岁男童|四川一精神病人电梯内砍死8岁男童 太残忍了!!
-
-
厨房美食分享 上班早餐来一碗八宝粥,软糯浓稠,美味可口
-
北京日报客户端|拿壁纸刀威胁民警、自称“特种兵”……俩酒鬼被刑拘
-
微微带你笑■早上六点钟,小偷哭着报了警…,开心一刻:小偷晚上溜进老王家
-
「充电头」首发麒麟820,荣耀发布旗下首款5G手机荣耀30S,40W快充
-
无线视界 V5售价1399元起,性能不输骁龙765G,最便宜5G手机来了!Realme
-
「传染病」公共卫生专家:复学后教师学生出现发热咳嗽等呼吸道症状,应采取这些措施
-
科技俱乐部菌 他婉拒了比尔盖兹将两个产品卖了给谷歌!这位教授用免费来赚钱
-
网络|41人的“荐股群”40人是“托”,严防“庄家”“大V”忽悠式荐股
-
晚巷|郑爽、邓伦、杨紫、李易峰、陈伟霆、吴谨言、万茜
-
“隔夜酒威力太大了!”男子清晨被抓“肠子都悔青了”