MySQL::Re:MySQLデータベースを縮小する方法
正しいです。 これは、InnoDBの共有テーブルスペースファイルの制限です。 MySQLサーバーがテーブルスペースファイル内の使用されている領域を圧縮してファイルを縮小することは、非常に高価な操作になります。 100GBの表領域ファイルがあり、それを圧縮するために再構築を実行する場合を想像してみてください。 通常、MySQLテーブルの再構築では、操作中に古いストレージと新しいストレージの両方がディスク上に同時に存在する必要があります。
したがって、InnoDBの動作は空のスペースを残して、それを新しい行バージョンの後続の挿入に使用することです。
参照:
Bug#1287http://bugs.mysql.com/bug.php?id=1287
Bug#1341http://bugs.mysql.com/bug.php?id=1341
共有InnoDBテーブルスペースを縮小する1つの解決策は次のとおりです。
1. Mysqldumpを使用して*すべて*InnoDBテーブルをバックアップします。
2. すべてのInnoDBテーブルを削除します。
3. ファイルシステムインターフェイスでibdata1ファイルを物理的に削除します。
4. 新しい小さなテーブルスペースファイルを再作成するMySQL Serverを再起動します。
5. すべてのInnoDBテーブルを復元し、必要に応じてテーブルスペースファイルを展開します。
別の解決策は、InnoDBテーブルをテーブルごとに別々のファイルに格納するオプションを使用することです。 これを行う場合は、縮小する各InnoDBテーブルでOPTIMIZE TABLEまたはALTER TABLEを使用できるはずです。 これは再構築することになっています。個々のテーブルのibdファイル。