流程图
一条修改语句在MySQL中执行, 并不是直接存放到ibd文件里去<br> 1: 先将原始数据放置到一块缓存区域, 叫Buffer Pool<br> 2: 将原先的值, 存放到undo日志里面去, 就是上面说的那一条undo版本链<br> 3: 先更新内存缓存数据 Buffer Pool里的数据<br> 4: 放入redo日志, 类似bin -log(server层的, 也就是说所有的存储引擎都有这一步)日志,写入redo日志(undo和redo是InnoDB特有的)<br> 5: 准备提交事务-- bin-log(恢复日志)日志写入磁盘<br> 6: 回写一个标记到redo日志里面去, 为了保证redo和bin-log数据一致性<br> 7: IO线程随机将Buffer Pool(里面涉及LRU算法)缓存中的数据写入磁盘
补充: <br><ol><li>日志IO 是顺序存储在磁盘<br></li><li>数据IO 是随机存储在磁盘</li></ol>