MySQL 8.0 リファレンスマニュアル


15.11.5 TRUNCATE TABLE によるディスク領域の再利用

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 で作成されたテーブル) または一般テーブルスペースに格納されているテーブルを切り捨てると、テーブルスペース内に未使用領域のブロックが残されます。


関連キーワード:  InnoDB, テーブル, 構成, スペース, 領域, 圧縮, ロック, インデックス, INFORMATION, SCHEMA