文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美國信紙尺寸) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


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

17.11.5 使用 TRUNCATE TABLE 回收磁碟空間

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

當截斷資料表時,它會在新的 .ibd 檔案中被捨棄並重新建立,並且釋放的空間會返回給作業系統。這與截斷儲存在 InnoDB 系統表格空間中的 InnoDB 資料表 (當 innodb_file_per_table=OFF 時建立的資料表) 以及儲存在共用一般表格空間中的資料表不同,在截斷資料表之後,只有 InnoDB 可以使用釋放的空間。

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