当MySQL更新数据时,InnoDB内部的操作流程大致是:
(1).将数据读入InnoDB buffer pool,并对相关记录加独占锁;
(2).将UNDO信息写入undo表空间的回滚段中;
(3).更改缓存页的数据,并将更新记录写入redo buffer中;
(4).提交时根据innodb_flush_log_at_trx_commit的设置,用不同的方式将redo buffer中的更新记录刷新到InnoDB redo log file中,然后释放独占锁;
(5).后台IO线程根据需要择机将缓存中更新过的数据刷新写入到磁盘文件中。
(2).将UNDO信息写入undo表空间的回滚段中;
(3).更改缓存页的数据,并将更新记录写入redo buffer中;
(4).提交时根据innodb_flush_log_at_trx_commit的设置,用不同的方式将redo buffer中的更新记录刷新到InnoDB redo log file中,然后释放独占锁;
(5).后台IO线程根据需要择机将缓存中更新过的数据刷新写入到磁盘文件中。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15498/viewspace-2135520/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15498/viewspace-2135520/