服务器学习心得


事务原子性与持久性原理

<ul> <li><a href="https://www.bilibili.com/video/BV1pA411H7Vd?p=3">https://www.bilibili.com/video/BV1pA411H7Vd?p=3</a></li> <li>使用日志实现</li> </ul> <h2>事务原子性与持久怎么保持</h2> <ul> <li>ACID</li> <li>A 原子性(Undo log)</li> <li>C 一致性(原子性+持久性+隔离性)</li> <li>I 隔离性(读写锁+MVCC)</li> <li>D 持久性(Redo log)</li> <li>记忆规则:原子性,持久性,隔离性,一致性</li> </ul> <h1>InnoDB两种日志</h1> <ul> <li> <p>原子性实现原理:Undo log(撤消日志)</p> </li> <li>持久性实现原理:Redo log(重做日志)</li> </ul> <h2>Undo log(撤消日志)</h2> <ul> <li>实现事务原子性,在InnoDB存储引擎中实现多版本并发控制(MVCC)</li> <li>在操作数据前将数据备份在Undo log中,修改数据现出错误,或者用户执行回滚操作,使用Undo log备份数据恢复到事务开始之前状态</li> <li> <p>Undo log是逻辑日志,可以理解为</p> <ul> <li>当删除一条记录时,Undo log中会记录一条对应的插入记录</li> <li>当插入一条记录时,Undo log中会记录一条对应的插入记录</li> <li>当更新一条记录时,Undo log中记录一条与更新相反操作的记录</li> </ul> </li> <li>是逻辑日志,写在内存中,事务成功后,才会将数据写到磁盘中</li> </ul> <h2>快照与备份区别</h2> <ul> <li>快照:某一时刻数据状态</li> <li>备份:数据全量的备份</li> </ul> <h2>Redo log(重做日志)</h2> <ul> <li> <p>先存到内存中在再写到磁盘中</p> </li> <li>与撤消日志相反,是新数据的备份</li> </ul>

页面列表

ITEM_HTML