Mysql

TRUNCATE TABLE 語句有時會掛起

  • November 27, 2021

為什麼TRUNCATE TABLE語句有時會掛起?此類問題的原因是什麼?

我正在從 MySQL 遷移到 MariaDB。MySQL 不會出現這個問題,只有 MariaDB 會出現這個問題。

掛的說法很簡單:

TRUNCATE TABLE sampledb.datatable;

什麼會導致這種情況發生,我該如何解決?

另一個觀察是如果表有一些數據,可能是一兩行,那麼截斷查詢成功。否則表有很多數據,查詢會掛起。

您在執行時遇到性能下降或停止的原因TRUNCATE TABLE是此語句的一個已知問題。請參閱錯誤 #68184:截斷表導致 innodb 停止。還為以前的版本打開了其他錯誤編號。

您可以使用:

CREATE TABLE log_table_new LIKE log_table;
RENAME TABLE log_table TO log_table_old, log_table_new TO log_table;
DROP TABLE log_table_old;

對於具有值的表來說,它變得很棘手AUTO_INCREMENT:新表是使用一個AUTO_INCREMENT立即在工作表中獲取的值創建的。如果您不想使用相同的值,您可以:

ALTER TABLE log_table_new AUTO_INCREMENT=some high enough value;

引用自:https://dba.stackexchange.com/questions/28055