mysql truncate 慢 处理措施

Q5: 不同版本对于 TRUNCATE 的实现是否存在差异?
通过对比 2-Q1 与 3-Q4:
MySQL 8.0 的 truncate 实现方式基本和 drop 实现方式相同,包括主要的耗时位置(都在 row_drop_table_for_mysql、os_file_delete_func)都是相同的。

MySQL 5.7 的 truncate 和 drop 实现差异较大,整个实现过程几乎是完全独立的代码。truncate 使用 row_truncate_table_for_mysql,
drop 使用 row_drop_table_for_mysql;truncate 操作的主要的耗时有 dict_drop_index_tree、os_file_truncate。


MySQL 8.0 的优化措施
row_drop_table_for_mysql 慢的问题,可以通过设置 innodb_adaptive_hash_index = off 进行优化;
os_file_delete_func 慢的问题,可以设置 innodb_flush_method = O_DIRECT 或者配置表的 HARD LINK 进行优化。
 

你可能感兴趣的:(java,数据库,mysql)