MySQL checkpoint執行時機

aoerqileng發表於2022-08-10

之前的文章已經說過了在undo purge的情況下會有全量checkpoint,下面記錄下其他情況checkpoint的執行時機


srv_master_do_active_tasks 這個函式會定時執行checkpoint

/* Make a new checkpoint */
if (cur_time % SRV_MASTER_CHECKPOINT_INTERVAL == 0) {
srv_main_thread_op_info = "making checkpoint";
log_checkpoint(TRUE, FALSE);
MONITOR_INC_TIME_IN_MICRO_SECS(
MONITOR_SRV_CHECKPOINT_MICROSECOND, counter_time);
}

srv_master_do_idle_tasks這個函式會在空閒的時候執行checkpoint

/* Make a new checkpoint */
srv_main_thread_op_info = "making checkpoint";
log_checkpoint(TRUE, FALSE);
MONITOR_INC_TIME_IN_MICRO_SECS(MONITOR_SRV_CHECKPOINT_MICROSECOND,
counter_time);

srv_master_do_shutdown_tasks 函式在shutdown的情況下會執行checkpoint

func_exit:
    /* Make a new checkpoint about once in 10 seconds */
srv_main_thread_op_info = "making checkpoint";
log_checkpoint(TRUE, FALSE);



log_check_margins 函式在檢查redo log空間的時候,沒有空間了,會執行checkpoint


buf_dblwr_create在innodb 初始化建立doublebuffer 的時候會執行checkpoint


recv_reset_logs reset log的時候會執行全量的checkpoint


row_import_celanup 的時候會執行全量checkpoint


fixup_tables_in_non_system_tablespace的情況會執行全量的checkpoint


有興趣學習原始碼的加群一起學習啊 QQ:                700072075



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25719946/viewspace-2909772/,如需轉載,請註明出處,否則將追究法律責任。

相關文章