MySQL技术内幕InnoDB存储引擎 - 检查点

 

InnoDB通过LSN(long sequence number) 来标记版本。

LSN 在 页,redo log,checkpoint 都存在。

可以通过  SHOW ENGINE INNODB STATUS 查看LSN信息:

---
LOG
---
Log sequence number          1638196851
Log buffer assigned up to    1638196851
Log buffer completed up to   1638196851
Log written up to            1638196851
Log flushed up to            1638196851
Added dirty pages up to      1638196851
Pages flushed up to          1638196851
Last checkpoint at           1638196851
411758 log i/o's done, 0.21 log i/o's/second

 

 

 

 

1、Master Thread CheckPoint

 

 

 

 

 

2、FLUSH LRU LIST Checkpoint

 InnoDB 需要 LRU列表中保留有一定的空闲页可以使用。

空闲页数量达不到保留数目,InnoDB会将LRU列表末尾的页移除。

如果移除的页中有脏页,则需要进行Checkpoint。

Mysql5.6开始,FLUSH LRU LIST Checkpoint 放在 Page Cleaner Thread中完成。

innodb_lru_scan_depth 为 保留的空闲页面数,默认为1024。

SHOW VARIABLES LIKE 'innodb_lru_scan_depth'

innodb_lru_scan_depth    1024

3、Async/Sync Flush Checkpoint 

重做日志不够用了,需要刷一些日志回磁盘。

 

 

 

 Async/Sync Flush Checkpoint  也是放在 Page Cleaner Thread中完成。

可以通过  SHOW ENGINE INNODB STATUS 查看Checkpoint次数信息:

 

 4、Dirty Page Too Much Checkpoint

当脏页比例达到一定数量时,强制进行Checkpoint。

该比例由 innodb_max_dirty_pages_pct 设置:

SHOW VARIABLES LIKE 'innodb_max_dirty_pages_pct'

innodb_max_dirty_pages_pct    90.000000

 

posted on 2020-01-29 13:19  HB1  阅读(458)  评论(0)    收藏  举报

导航