Purge Large File Asynchronously
AliSQL通過異步Purge數(shù)據(jù)文件的方式來提高系統(tǒng)的穩(wěn)定性。
背景信息
當(dāng)通過DROP TABLE來刪除數(shù)據(jù)時,對應(yīng)的InnoDB數(shù)據(jù)文件會直接從文件系統(tǒng)中刪除。如果數(shù)據(jù)文件非常大,直接刪除文件會導(dǎo)致POSIX文件系統(tǒng)出現(xiàn)嚴重的穩(wěn)定性問題。AliSQL的大文件清理功能會啟動一個后臺線程來異步清理數(shù)據(jù)文件。當(dāng)執(zhí)行DROP TABLE時,對應(yīng)的數(shù)據(jù)文件會被重命名為臨時文件,然后通過文件清理線程異步、平緩地清理。
使用方法
使用如下命令查看實例全局變量設(shè)置:
SHOW GLOBAL VARIABLES LIKE '%data_file_purge%';
返回結(jié)果如下:
+----------------------------------------+-------+ | Variable_name | Value | +----------------------------------------+-------+ | innodb_data_file_purge | ON | | innodb_data_file_purge_all_at_shutdown | OFF | | innodb_data_file_purge_dir | | | innodb_data_file_purge_immediate | OFF | | innodb_data_file_purge_interval | 100 | | innodb_data_file_purge_max_size | 128 | | innodb_print_data_file_purge_process | OFF | +----------------------------------------+-------+
參數(shù)說明如下:
參數(shù)
說明
innodb_data_file_purge
是否啟用異步清除策略。
innodb_data_file_purge_all_at_shutdown
正常關(guān)機時全部清理。
innodb_data_file_purge_dir
臨時文件目錄。
innodb_data_file_purge_immediate
取消數(shù)據(jù)文件的鏈接但不清理。
innodb_data_file_purge_interval
清理時間間隔。單位:ms。
innodb_data_file_purge_max_size
每次清理單個文件大小的最大值。單位:MB。
innodb_print_data_file_purge_process
是否打印文件清理工作進程。
說明建議使用如下命令進行設(shè)置:
set global INNODB_DATA_FILE_PURGE = on; set global INNODB_DATA_FILE_PURGE_INTERVAL = 100; set global INNODB_DATA_FILE_PURGE_MAX_SIZE = 128;
使用如下命令查看清理進度:
select * from information_schema.innodb_purge_files;
返回結(jié)果如下:
+--------+---------------------+--------------------+---------------+-------------------------+--------------+ | log_id | start_time | original_path | original_size | temporary_path | current_size | +--------+---------------------+--------------------+---------------+-------------------------+--------------+ | 0 | 2021-05-14 14:40:01 | ./file_purge/t.ibd | 146800640 | ./#FP_210514 14:40:01_9 | 79691776 | +--------+---------------------+--------------------+---------------+-------------------------+--------------+
參數(shù)說明如下:
參數(shù)
說明
start_time
清理操作的開始時間。
original_path
表數(shù)據(jù)文件的原始路徑。
original_size
表數(shù)據(jù)文件的原始大小,單位:byte。
temporary_path
清理中的臨時文件路徑。
current_size
待清理的剩余臨時文件大小,單位:byte。