迅速なデータ インポートのための MySQL LOAD DATA INFILE の最適化
LOAD DATA INFILE を使用して大量のデータセットを MySQL にインポートすると、特に次の場合に時間がかかることがあります。インポート後にインデックスを作成します。この記事では、プロセスを高速化して、終了したクエリがデータベース内で実行され続ける問題に対処するためのさまざまな手法を検討します。
LOAD DATA INFILE の高速化
InnoDB テーブルの場合は、次の点を考慮してください。次の最適化のヒント:
-
CSV ファイルを主キー順に並べ替えます: InnoDB はクラスター化された主キーを利用するため、ファイルを並べ替えると読み込みプロセスが大幅に高速化されます。
-
ロード前にテーブルを切り詰めます: 既存のデータを削除して、読み取りと書き込みにかかる時間を最小限に抑えます。
-
自動コミットを無効にします: トランザクションのコミットを遅らせるには、autocommit=0 を設定しますインポート全体が完了するまで、コミット数が減り、パフォーマンスが向上します。
-
チェックを無効にする: set unique_checks=0 および setforeign_key_checks=0 を使用して、一意キーおよび外部キーのチェックを一時的に無効にします。
-
バイナリ ログを無効にする: ログの書き込みに関連するオーバーヘッドを排除するには、sql_log_bin=0 を設定してバイナリ ログを一時停止します。
-
CSV ファイルをチャンクに分割します: CSV ファイルをより小さなセグメントに分割して読み込みを高速化します。
クエリの終了
MySQL を再起動せずに遅いクエリを終了するには、次の手順を試してください:
-
KILL コマンド: KILL {query_id} コマンドを発行して、特定のクエリを終了します。
-
クライアント接続を閉じる: クエリが実行されたターミナル ウィンドウを強制的に閉じます。が実行された場合は、実行中のクエリも停止します。ただし、これによりデータの破損や不整合が発生する可能性があります。
これらの最適化を適用すると、LOAD DATA INFILE のパフォーマンスが大幅に向上し、データ インポート プロセスを合理化できます。
以上がデータのインポートを高速化するために MySQL LOAD DATA INFILE を最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。