1、checkpoint是什么?
又名检查点,其实可以看成是个时间戳,在这个时间戳之前的所有脏数据都已经写盘。
2、checkpoint的目的或者好处是什么?
为了缩短崩溃恢复时间。
3、怎么理解缩短数据库崩溃恢复的时间?
在pg中,用户进行更新操作,并不会直接对磁盘上的数据文件进行io操作,而是先修改内存中的数据,然后写入wal文件,所以内存中就有会未刷到磁盘上的脏页,如果这个时候数据库突然宕机,这部分数据就会丢失了。
那么数据库在重新启动时,就需要利用wal文件里的数据,对数据进行恢复,但是真正从哪个位置开始恢复,就需要借助checkpoint的机制。
因为上面我们提到,checkpoint之前的所有脏数据都已经写盘。基于这个原则,那么做实例恢复的时候,只需要重演检查点之后的wal日志记录即可。
4、能不能详细介绍下checkpoint的具体过程?
checkpoint被触发后,它会经历以下几个过程。
-
将共享内存中的脏页刷出到磁盘。
-
生成checkpoint记录到xlog中(注意看这里,Checkpoint 本身也会被记录到XLOG)
-
更新pg_control文件,其中有checkpoint的lsn信息(后期恢复可以从这个文件读取checkpoint的lsn)
</