2012-12-19 3 views
6

ibdataファイルを調べたところ、128 GBでした。私は各テーブルのサイズを取り出し、テーブルには500万レコードがあり、90 GBを示していました。ibdata1ファイルを消去する方法とパフォーマンスにどのように影響する可能性がありますか?

ibdata1サイズを表示する必要がないため、このテーブルを切り捨てました。それでも128 GBを表示しています。それから私は各テーブルのサイズを取り出し、その合計はわずか35-38 GBです。

どのように私のDbサーバー上の90 GBのスペースを取り戻すことができます。私はred-hat Linuxサーバ上でphpでmysqlを使用しています。

私はDB上で何かを削除するとレプリケーションは削除されますが、割り当てられた領域は手動で削除されません。それは方法です。

+1

http://ssackoverflow.com/questions/3456159/how-to-shrink-purge-ibdata1-file-in-mysqlのPssibleの複製。つまり、あなたはできません。すべてのデータベースをダンプし、サーバを停止し、ibdataファイルを削除し、再起動し、ダンプを再インポートします。 – RandomSeed

+1

次回は、['innodb_file_per_table'](http://dev.mysql.com/doc/refman/5.5/en/innodb-multiple-tablespaces.html)オプションを使用してください。大きなテーブルを削除すると、スペースを再利用できます。 – gertvdijk

+0

@YaKのリンクをご覧ください。間違いなく重複していて、彼/彼女がリンクしている投稿には段階的な指示があります。 – Tass

答えて

5

ibdataファイルでスペースが消費されると、決してそれは消えません。データファイルを 'shink'する唯一の方法は、dbsをダンプし、すべて削除し、ibdataファイルを削除し、mysqlを再起動してダンプをリロードすることです。

テーブル全体を頻繁に削除する場合は、テーブルごとに1つのデータファイルを使用するようにinnodbを設定できます。この場合、テーブルを削除すると、そのテーブル固有のibdataファイルを削除できます。

+0

すべてのテーブルを削除してDBを削除してibdatafileを削除した場合、ダンプをリロードすると自動作成されます。 –

+0

@NaanuManuはい、フルダンプがあることを確認してください。すべてのinnodbデータは、削除すると失われます。 – Ray

関連する問題