InnoDB ストレージ エンジンを使用する MySQL テーブルがあり、約 200 万のデータ行が含まれています。テーブルからデータ行を削除しても、割り当てられたディスク領域は解放されません。 optimize table
コマンドを実行した後、ibdata1 ファイルのサイズは減少していません。
MySQL からディスク容量を再利用する方法はありますか?
私は悪い状況に陥っています。アプリケーションは約 50 か所の異なる場所で実行されており、ほぼすべての場所でディスク容量が不足しています。
P粉1830770972023-10-15 17:09:49
私自身も同じ問題に遭遇しました。
データベースを削除しても、innodb は依然としてディスク領域を解放しません。エクスポートし、mysql を停止し、ファイルを手動で削除し、mysql を起動し、データベースとユーザーを作成してからインポートする必要があります。ありがたいことに、行は 200MB しかありませんが、250GB の innodb ファイルが節約されました。
設計は失敗しました。
P粉3409802432023-10-15 16:24:36
MySQL は ibdata1 のサイズを削減しません。一度。 Optimize Table
を使用して、削除されたレコードによって使用されていたスペースを解放した場合でも、そのスペースは後で再利用されます。
別の方法は、innodb_file_per_table
を使用するようにサーバーを構成することですが、これにはバックアップ、データベースの削除、および回復が必要です。良い面としては、最適化されたテーブル
です。