MySQL 8.4 版本注意事項
本節說明 MySQL 如何回應磁碟空間已滿錯誤 (例如 「裝置上沒有剩餘空間」) 和超出配額錯誤 (例如 「寫入失敗」 或 「達到使用者區塊限制」)。
本節適用於寫入 MyISAM
資料表。它也適用於寫入二進位日誌檔案和二進位日誌索引檔案,只是參考 「列」 和 「記錄」 時應理解為 「事件」。
當發生磁碟空間已滿的情況時,MySQL 會執行以下操作:
它會每分鐘檢查一次是否有足夠的空間來寫入目前的列。如果有足夠的空間,它會繼續執行,就像什麼都沒發生過一樣。
它會每 10 分鐘在日誌檔中寫入一筆項目,警告磁碟空間已滿的情況。
要減輕這個問題,請採取以下動作:
要繼續執行,您只需要釋出足夠的磁碟空間來插入所有記錄。
或者,要中止執行緒,請使用 mysqladmin kill。執行緒會在下次檢查磁碟 (一分鐘後) 時中止。
其他執行緒可能會等待導致磁碟空間已滿情況的資料表。如果您有多個 「鎖定」 的執行緒,則終止等待磁碟空間已滿情況的執行緒可讓其他執行緒繼續執行。
當您使用 REPAIR TABLE
或 OPTIMIZE TABLE
,或者在 LOAD DATA
或 ALTER TABLE
陳述式之後批次建立索引時,會有上述行為的例外情況。所有這些陳述式都可能會建立大型暫存檔案,如果放任不管,可能會對系統的其餘部分造成大問題。如果在 MySQL 執行這些作業時磁碟空間已滿,它會移除大型暫存檔案,並將資料表標示為崩潰。例外情況是,對於 ALTER TABLE
,舊資料表會保持不變。