ホームページ >データベース >mysql チュートリアル >MySQL InnoDB ストレージ エンジンをクリーンアップして圧縮するにはどうすればよいですか?

MySQL InnoDB ストレージ エンジンをクリーンアップして圧縮するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-18 22:09:17209ブラウズ

How Can I Clean Up and Shrink My MySQL InnoDB Storage Engine?

MySQL InnoDB ストレージ エンジンのクリーンアップ

MySQL InnoDB ストレージ エンジンをクレンジングし、削除されたテーブルからデータを削除するには、次の手順に従います。

InnoDB についてアーキテクチャ

InnoDB は、ibdata1 ファイルに次の 6 種類の情報を保存します。

  • テーブル データ
  • テーブル インデックス
  • MVCC (マルチバージョン同時実行性)コントロール) データ
  • テーブル メタデータ (データDictionary)
  • Double Write Buffer
  • Insert Buffer

OPTIMIZE TABLE を実行できますか?

Using OPTIMIZE TABLE on ibdata1 に格納されている InnoDB テーブルには 2 つのテーブルがあります。効果:

  • ファイル内でテーブルのデータとインデックスを連続させます。
  • 変更されたデータとインデックスを追加することで ibdata1 を拡張します。

OPTIMIZE TABLE を実行できますか? innodb_file_per_table?

このオプションを有効にすると、OPTIMIZE TABLE は InnoDB テーブルごとに個別の .ibd ファイルを作成します。この分離によりデータとインデックスが ibdata1 から分離されますが、データ ディクショナリ エントリは ibdata1 から削除されません。

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

ibdata1 を縮小して不要なデータを削除するには:

  1. すべてのデータベースを SQL テキスト ファイルにダンプします(SQLData.sql).
  2. mysql と information_schema を除くすべてのデータベースを削除します。ユーザー権限を保持します。
  3. トランザクションの変更をフラッシュするには、innodb_fast_shutdown を 0 に設定します。
  4. MySQL をシャットダウンします。
  5. これらを使用して my.cnf (または my.ini) を変更します。設定:

    • innodb_file_per_table
    • innodb_flush_method=O_DIRECT
    • innodb_log_file_size=1G (25% であることを確認してください) innodb_buffer_pool_size)
  6. ibdata および ib_logfile ファイルを削除します。
  7. MySQL を起動します。
  8. SQLData.sql をインポートします。

この後このプロセスでは、ibdata1 にはテーブルのメタデータのみが含まれ、個々の InnoDB テーブルは .frm および .ibd 拡張子の付いた別個のファイルに保存されます。その後、OPTIMIZE TABLE を使用してテーブルの .ibd ファイルを縮小できます。

以上がMySQL InnoDB ストレージ エンジンをクリーンアップして圧縮するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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