回答:
このファイルibdata1
は、InnoDBインフラストラクチャのシステムテーブルスペースです。
InnoDBに不可欠な情報のクラスがいくつか含まれています
InnoDBユニバース(右側)でのibdata1の場所に注意してください
innodb_file_per_tableibdata1
を有効にすることで、データページとインデックスページを分離できます。これにより、新しく作成されたInnoDBテーブルは、データとインデックスページを外部.ibd
ファイルに保存します。
例
CREATE TABLE mydb.mytable (...) ENGINE=InnoDB;
、作成 /var/lib/mysql/mydb/mytable.frm
/var/lib/mysql/mydb/mytable.ibd
InnoDBテーブルの保存場所に関係なく、InnoDBの機能では、テーブルメタデータを検索し、MCID情報を保存および取得して、ACID準拠とトランザクション分離をサポートする必要があります。
ibdata1からテーブルデータとインデックスを分離することに関する過去の記事を以下に示します。
Oct 29, 2010
:StackOverflowの元の投稿Nov 26, 2011
: ファイルの行6308のエラー1114(HY000)&テーブルuser_analysisがいっぱいですFeb 03, 2012
:MySQL InnoDBのテーブルのスケジュールされた最適化Mar 25, 2012
:InnoDBがすべてのデータベースを1つのファイルに保存するのはなぜですか?Apr 01, 2012
:innodb_file_per_tableはお勧めですか?ibdata1にすべてを保存し続けることはできますが、それによりLVMスナップショットの作成が非常に面倒になります(私の意見)。
My StackOverflowポストを使用して、そのファイルを永続的に縮小する必要があります。
このクエリを実行してください:
SELECT
((POWER(1024,3)*94 - InnoDBDiskDataAndIndexes))/POWER(1024,3) SpaceToReclaim
FROM
(SELECT SUM(data_length+index_length) InnoDBDiskDataAndIndexes
FROM information_schema.tables WHERE engine='InnoDB') A;
これにより、InnoDBクリーンアップの適用後に無駄になったスペースをどれだけ回収できるかがわかります。
SpaceToReclaim
。これはメガバイト単位ですか?パーセント?バイト?
94
は、ibdata1
ファイルのサイズをGBで置き換えて、サイズをGBで指定SpaceToReclaim
する必要があります。
そのファイルはibdata1
、ではなくibdatal
、すべてのInnoDBデータベースが含まれています。削除すると、すべてのデータが失われます。
対処方法については、MySQLでibdata1ファイルを圧縮/削除する方法をご覧ください。