- 主页 > 生活百科 > >
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原理:(保存最新数据)
推荐阅读
-
文明包头|彰显人民至上的“包头温度”,包头:创城“快进”城建提速
-
ZAKER|3个噩耗,损失一个比一个惨,特朗普跳脚也没用,24小时内,美迎来
-
『优质』大棚西葫芦只开花不结瓜?农民教你种植技巧收获优质高产西葫芦!
-
-
新闻联播微信|韩国首尔市长生前最后监控曝光,警方在官邸发现其遗嘱
-
电影,巴啦啦小魔仙|《巴啦啦小魔仙》凌美琪扮演者不幸去世,妈妈发文证实其死讯
-
大门口的台阶放什么植物最好 大门口的台阶放什么植物
-
荣耀手机|华为真正的“跳水王”,上市时卖2999元,短短一个月降价300元
-
幽默空初彤|搞笑GIF趣图:开门大吉啊!这还是用头开的
-
#新华网客户端#鱼鳍是怎么进化成四肢的?3.75亿年前的鱼类化石揭开了答案
-
-
-
陈戌源|恒大为国足世界杯送大礼!陈戌源熊抱5亿巨星,这一瞬间意味深长
-
护肤品|妈妈适合什么护肤品 十款超级经典妈妈的护肤品推荐
-
洗车昨晚一场“泥雨” 洗车行迎来复工后“生意最好一天”
-
-
-
美国_时政|蔡英文和美国“驻台代表”共赴金门,大陆学者:就像黑帮老大罩着小弟
-
[标致508]什么人会开标致508?它的性价比高吗?标致508有什么缺点
-
精益求精的精是什么意思字典上的解释 精益求精的精是什么意思