というテーブルがありますpath
。13G ibdata1 の約 99% を占めます。以前はINNODB
テーブルでしたが、に変換しましたMYISAM
。
新しいpath
テーブルでテーブルの最適化を実行すると、ibdata1 ファイルが解放されますか? または、これは決してサイズが小さくならないので、削除して新しいデータベースを再インポートする必要がありますか?
いいえ。 InnoDB テーブルを削除すると、 InnoDB テーブルスペース (ファイル)内のスペースが解放されますが、ファイルは縮小されません。ibdata1
ibdata1
例外は、サーバーinnodb_file_per_table
変数が設定されている間にテーブルが作成された場合、テーブルは独自の個別の InnoDB テーブルスペース (データファイル) にあり、テーブルが削除されると、テーブルによって使用されていたスペースが解放されることです 。
参照: 14.3.3. テーブルごとのテーブルスペースの使用 http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html
答えはノーです (上記のより良い説明)。私がしなければならなかったのはこれでした:
1) Dump the database
2) Stop mysql
3) Delete the `ibdata1` file and two log files.
4) Restart mysql
5) Import the sql dump.
ibdata1
これにより、デフォルトのファイル サイズに戻ります。次に、1)テーブルに整合性制約がない場合はテーブルのエンジンを myisam に変更するか(これは私が行ったことです)、2)innodb_file_per_table=ON
innodbテーブルを保持する場合は set を実行できます。