LSN(log sequence number)——日志序列号:递增产生,表示事务写入重做日志的字节总量,占用8个字节。
LSN存在什么地方?有什么含义?
1 | --- |
LSN 有什么用?
主要用于MySQL重启恢复
恢复的算法
假设: redo_log_lsn = 15000 , cp_lsn=10000 , 这时候MySQL crash了,重启后的恢复流程如下:
- cp_lsn = 10000 之前的redo 日志,不需要恢复: 因为checkpoint之前的日志已经可以确保刷新完毕
- 那么 10000 <= redo_log_LSN <= 15000 的日志需要结合page_lsn判断,哪些需要重做,哪些不需要重做。
- redo_log_LSN 日志里面记录的page 操作,如果redo_log_LSN <= page_lsn , 这些日志不需要重做,因为page已经是最新的
- redo_log_LSN 日志里面记录的page 操作, 如果redo_log_LSN >= page_lsn , 这些日志是需要应用到page 里面去的,这一系列操作我们称为恢复.


