文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  使用 TRUNCATE TABLE 回收磁碟空間

17.11.5 使用 TRUNCATE TABLE 回收磁碟空間

若要在截斷 InnoDB 資料表時回收作業系統磁碟空間,該資料表必須儲存在其自己的 .ibd 檔案中。若要讓資料表儲存在其自己的 .ibd 檔案中,則在建立資料表時,必須啟用 innodb_file_per_table。此外,截斷的資料表與其他資料表之間不得有外部索引鍵約束,否則 TRUNCATE TABLE 作業會失敗。但是,允許在同一資料表的兩個欄位之間建立外部索引鍵約束。

當截斷資料表時,會將其捨棄並在新的 .ibd 檔案中重新建立,並將釋放的空間傳回作業系統。這與截斷儲存在 InnoDB 系統表空間 (當 innodb_file_per_table=OFF 時建立的資料表) 和儲存在共用的一般表空間中的 InnoDB 資料表形成對比,在這種情況下,資料表截斷後,只有 InnoDB 可以使用釋放的空間。

截斷資料表並將磁碟空間傳回作業系統的能力也表示實體備份可以更小。截斷儲存在系統表空間 (當 innodb_file_per_table=OFF 時建立的資料表) 或一般表空間中的資料表,會將未使用的空間區塊留在表空間中。