ホームページ >データベース >mysql チュートリアル >データベース全体を再構築せずに InnoDB ストレージ エンジンを効果的にクリーンアップするにはどうすればよいですか?

データベース全体を再構築せずに InnoDB ストレージ エンジンを効果的にクリーンアップするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-06 22:03:15759ブラウズ

How Can I Effectively Clean an InnoDB Storage Engine Without Rebuilding the Entire Database?

InnoDB ストレージ エンジンのクリーニング: ガイド

データベース メンテナンスの分野では、InnoDB から古いデータを削除する方法が問題になります。ストレージ エンジンが頻繁に発生します。

なしで InnoDB をクリーンアップできますか?再構築していますか?

残念ながら、MyISAM とは異なり、データベース全体を再構築せずに削除されたデータを InnoDB エンジンから直接削除することは現実的ではありません。これは、InnoDB が、テーブル データ、インデックス、メタデータなどのさまざまな種類の情報を ibdata1 ファイルに保存する複雑なインフラストラクチャを利用しているためです。単純にテーブルを最適化すると、ibdata1 内のデータは統合されるだけで、縮小されません。

InnoDB インフラストラクチャ クリーンアップ

InnoDB エンジンを効果的にクリーンするには、より包括的なアプローチが必要です。

  1. データをダンプしてドロップデータベース: すべてのデータを SQL ファイルにエクスポートし、必須ではないデータベースをすべて削除します (mysql と information_schema を除く)。
  2. トランザクションをフラッシュしてシャットダウン MySQL: 完了するには、innodb_fast_shutdown を 0 に設定します。トランザクションをフラッシュしてからシャットダウンするMySQL.
  3. my.cnf を変更します: innodb_file_per_table を有効にし、innodb_flush_method を O_DIRECT に構成し、innodb_log_file_size を innodb_buffer_pool_size の 25% に設定し、増加します。 innodb_buffer_pool_size.
  4. ibdata および ib_logfile: これらのファイルを削除します。オプションで /var/lib/mysql/mysql を除くすべてのサブディレクトリも含めます。
  5. MySQL を起動します: ibdata1 と ib_logfile0/1 を再作成します。
  6. データのインポート: SQL ダンプを復元して、新しく作成されたデータベース ファイルを設定します。

メモ:

  • 有効にすることでinnodb_file_per_table を使用すると、各 InnoDB テーブルは ibdata1 の外部にある独自の .ibd ファイルに常駐し、将来の最適化とデータ削除が簡素化されます。
  • mysql スキーマの削除によりエラーが発生した場合は、mysql スキーマ ファイルを復元します。

このプロセスにより、新しい ibdata1 ファイルはテーブルのメタデータが含まれるため、サイズが大幅に削減され、アクティブなデータを保存するためのクリーンな InnoDB 環境が確保されます。

以上がデータベース全体を再構築せずに InnoDB ストレージ エンジンを効果的にクリーンアップするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。