ホームページ  >  記事  >  データベース  >  大規模なデータのインポートで MySQL LOAD DATA INFILE のパフォーマンスを最適化するにはどうすればよいですか?

大規模なデータのインポートで MySQL LOAD DATA INFILE のパフォーマンスを最適化するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-07 19:01:02140ブラウズ

How Can I Optimize MySQL LOAD DATA INFILE Performance for Large Data Imports?

MySQL LOAD DATA INFILE パフォーマンスの最適化

LOAD DATA INFILE コマンドを使用して大量のデータを MySQL テーブルにインポートする場合、パフォーマンスが低下する可能性があります。重大な懸念。発生する課題の 1 つは、キーなしでインポートするとデータの読み込みは速くなりますが、キーの作成は遅くなる可能性があり、キーを使用してインポートするとインポート プロセスが遅くなる場合との間のトレードオフです。インポートを高速化するためのいくつかの戦略を次に示します。

主キーによるデータの順序:

データをロードする前に、CSV ファイルを主キーの順序に従って並べ替えます。ターゲットテーブル。これは、クラスター化された主キーを使用するため、InnoDB を使用する場合に特に有益です。つまり、ソート時にデータがより速く読み込まれることになります。

制約の無効化:

一意および外部キーを一時的に無効にします。キー制約 (set unique_checks = 0; setforeign_key_checks = 0;) を使用してインポート速度を向上させます。データがロードされたら、これらの制約を再度有効にすることができます (set unique_checks = 1; setforeign_key_checks = 1;)。

バイナリ ログの無効化:

バイナリ ログの無効化(set sql_log_bin=0;) インポート時間が長くなる可能性もあります。有効にすると、MySQL はレプリケーションの目的ですべての書き込みクエリをバイナリ ログに記録します。これを無効にすると、データのロードに使用できるリソースが解放されます。

Truncate Table:

データをロードする前に、ターゲット テーブルを切り詰めて既存の行を削除します (truncate <) ;表>;)。これにより、インポートしているデータがテーブル内の唯一のデータになります。

CSV ファイルの分割:

CSV ファイルが非常に大きい場合は、CSV ファイルを次のように分割することを検討してください。より小さな塊。これにより、MySQL はより小さなバッチでデータをロードできるようになり、各ロード操作に必要な時間が短縮されます。

遅いクエリを終了する:

MySQL を再起動せずに遅いクエリを終了するには場合は、KILL QUERY コマンドを使用します。このコマンドは、MySQL コマンド ラインから、または phpMyAdmin などのツールを使用して実行できます。

追加のヒント:

  • 回避するには、REPLACE または INSERT IGNORE オプションを使用します。重複キー エラー。
  • インポートのたびに一時テーブルが作成されないようにするには、LOCAL キーワードを使用します。
  • 十分な RAM と CPU リソースを備えた高性能サーバーを使用してください。

以上が大規模なデータのインポートで MySQL LOAD DATA INFILE のパフォーマンスを最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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