背景:
目前5.7仍然是使用最为广泛的版本,但是在实际的业务运维中,我们经常碰到truncate表时导致tps/qps抖动从而影响业务的情况,如果truncate的表比较多,监控就会像下图这样:
通过抓取堆栈发现:
0000000001237cce buf_LRU_flush_or_remove_pages(unsigned long, buf_remove_t, trx_t const*)
0000000001286bdc fil_reinit_space_header_for_table(dict_table_t*, unsigned long, trx_t*)
000000000114ca57 row_truncate_table_for_mysql(dict_table_t*, trx_t*)
0000000001046a64 ha_innobase::truncate()
0000000000e77398 Sql_cmd_truncate_table::handler_truncate(THD*, TABLE_LIST*, bool)
0000000000e77810 Sql_cmd_truncate_table::truncate_table(THD*, TABLE_LIST*)
0000000000e779d4 Sql_cmd_truncate_table::execute(THD*)
0000000000ce40d8 mysql_execute_command(THD*, bool)