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 などのツールを使用して実行できます。
追加のヒント:
以上が大規模なデータのインポートで MySQL LOAD DATA INFILE のパフォーマンスを最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。