そのibdata1
縮小しないことは、MySQLの特に厄介な機能です。 ibdata1
すべてのデータベースを削除し、ファイルを削除してダンプをリロードしない限り、ファイルを実際に縮小することはできません。
ただし、インデックスを含む各テーブルが個別のファイルとして保存されるようにMySQLを構成できます。そのようにしてibdata1
大きくなることはありません。 BillKarwinのコメントによると これは、MySQLのバージョン5.6.6以降でデフォルトで有効になっています。
少し前にやった。ただし、テーブルごとに個別のファイルを使用するようにサーバーを設定するには、my.cnf
を変更する必要があります。 これを有効にするには:
[mysqld]
innodb_file_per_table=1
https://dev.mysql .com / doc / refman / 5.6 / en / innodb-file-per-table-tablespaces.html
ibdata1
からスペースを再利用したい場合 実際にファイルを削除する必要があります:
-
mysqldump
を実行しますmysql
を除くすべてのデータベース、プロシージャ、トリガーなどの およびperformance_schema
データベース - すべてのデータベースを削除します上記の2つのデータベースを除く
- mysqlを停止します
-
ibdata1
を削除します およびib_log
ファイル - mysqlを起動します
- ダンプから復元
手順5でMySQLを起動すると、ibdata1
およびib_log
ファイルが再作成されます。
今、あなたは行く準備ができています。分析用の新しいデータベースを作成すると、テーブルは別のibd*
に配置されます。 ibdata1
にないファイル 。通常、データベースをすぐに削除するため、ibd*
ファイルは削除されます。
http://dev.mysql.com/doc/refman /5.1/en/drop-database.html
あなたはおそらくこれを見たことがあるでしょう:
http://bugs.mysql.com /bug.php?id=1341
コマンドALTER TABLE <tablename> ENGINE=innodb
を使用する またはOPTIMIZE TABLE <tablename>
ibdata1からデータとインデックスページを抽出して、ファイルを分離することができます。ただし、上記の手順を実行しない限り、ibdata1は縮小されません。
information_schema
について 、それは必要ではなく、ドロップすることもできません。実際には、テーブルではなく、読み取り専用ビューの集まりにすぎません。そして、それらに関連付けられたファイルはなく、データベースディレクトリもありません。 informations_schema
はメモリdb-engineを使用しており、mysqldの停止/再起動時にドロップおよび再生成されます。 https://dev.mysql.com/doc/を参照してくださいrefman / 5.7 / en / information-schema.html
。