数据库小计

checkpoint

2022-03-30  本文已影响0人  祁小彬

问题1:MySQL怎么判断脏页?基于数据页面的LSN,可以了解当前数据页面的版本。MySQL系统在更新记录时,会在对应的重做日志redo-log中更新LSN的值,与此同时记录的数据页面的头部也会记录redo-log中的LSN最新的值。当MySQL刷脏数据页面时,磁盘中数据页面文件的LSN的值也会增加。回到我们的问题,MySQL怎么判断脏页?只需要判断这个页面的LSN值,如果数据页面的LSN的值大于 Checkpoint的LSN值,说明这个数据页面接受了新的更新(所有数据页面的LSN更新到更大的值)。那么这个页面就是脏页。

问题2:MySQL基于Checkpoint如何从crash中恢复?MySQL在崩溃恢复时,会从重做日志redo-log的Checkpoint处开始执行重放操作。 它从last Checkpoint对应的LSN开始扫描redo-log日志,并将其应用到buffer-pool中,直到last Checkpoint对应的LSN等于 log flushed up to 对应的 LSN (也就是redo-log磁盘上存储的LSN值),则恢复完成 。

上一篇 下一篇

猜你喜欢

热点阅读