InnoDB
テーブルを切り捨てるときにオペレーティングシステムのディスク領域を再利用するには、そのテーブルが独自の .ibd ファイルに格納されている必要があります。 独自の .ibd ファイルに格納されるテーブルの場合は、そのテーブルを作成するときに innodb_file_per_table
を有効にする必要があります。 さらに、切り捨てられるテーブルとその他のテーブルの間に外部キー制約が存在していてはいけません。そうしないと、TRUNCATE TABLE
操作は失敗します。 ただし、同じテーブル内の 2 つのカラム間の外部キー制約は許可されます。
テーブルが切り捨てられると、そのテーブルが削除されて新しい .ibd
ファイル内に再作成され、解放された領域はオペレーティングシステムに返されます。 これは、InnoDB
system tablespace 内に格納されている InnoDB
テーブル (innodb_file_per_table=OFF
時に作成されたテーブル) および共有 general tablespaces に格納されているテーブルを切り捨てることとは対照的で、InnoDB
のみがテーブルの切捨て後に解放された領域を使用できます。
テーブルを切り捨て、そのディスク領域をオペレーティングシステムに返す機能はまた、物理バックアップを小さくすることもできます。 システムテーブルスペース (innodb_file_per_table=OFF
で作成されたテーブル) または一般テーブルスペースに格納されているテーブルを切り捨てると、テーブルスペース内に未使用領域のブロックが残されます。