我个人认为这是一个名词,而不是动词。
在MySQL8.0官方文档里对checkpoint的定义如下:
=============================================
checkpoint
As changes are made to data pages that are cached in the buffer pool, those changes are written to the data files sometime later, a process known as flushing. The checkpoint is a record of the latest changes (represented by an LSN value) that have been successfully written to the data files.
=============================================
我只翻译最后一段话:
checkpoint是redolog里最新的改变。
看起来有些不通顺,没关系,我加上自己的理解再翻译一次(个人理解哈,与其他资料都不太一样):
checkpoint是一个过程。当负责刷脏页的后台线程刷不动了(此时磁盘上的redo日志文件被写满了),就需要用户线程帮忙标记下,看看哪些redo日志可以被覆盖。
怎么标记呢?redo文件里有一个偏移量(学名叫checkpoint_lsn),偏移量小于此值的redo日志可以被覆盖。当后台线程刷不动的时候,就意味着文件已经写到了上次checkpoint_lsn标记的地方。此时用户线程需要去写入日志文件里checkpoint_lsn的值。改完后后台线程就可以继续刷刷刷了。
总结:因为redo写满了,需要用户线程去写入chechpoint_lsn值的过程就是checkpoint
欢迎大家阅读redo完整的介绍: