キーを持つテーブルのデータ インファイルのロードを使用して MySQL データ インポートを最適化する方法

Susan Sarandon
リリース: 2024-11-08 08:49:02
オリジナル
402 人が閲覧しました

How to Optimize MySQL Data Import using Load Data Infile for Tables with Keys?

Load Data Infile を使用した MySQL データ インポートの最適化

大きなデータセットを MySQL テーブルにインポートするのは、時間のかかる作業になる可能性があります。 「Load data infile...」コマンドを使用する場合、速度とデータの整合性のバランスを取るのが難しい場合があります。この質問では、そのようなインポート、特にキーを持つテーブルのパフォーマンスを向上させる方法を検討します。

インポート速度の向上

質問で言及されている主な懸念事項は、キーが遅いことです。キーなしでデータをインポートした後の作成。これに対処するには:

  • CSV ファイルを並べ替えます: CSV ファイル内のデータをテーブルの主キーの順序で並べ替えます。これにより、Innodb はクラスタ化された主キー構造を利用して読み込みを高速化できます。
  • 制約を無効にする: 一意キーと外部キーのチェックを一時的に無効にして、読み込み中のオーバーヘッドを削減します。コマンド set unique_checks = 0; を使用します。
  • バイナリ ログを無効にする: バイナリ ログをオフにして (sql_log_bin=0; に設定)、パフォーマンスを向上させるためにログをバイパスします。
  • 分割大きなファイル: 大きな CSV ファイルを小さなチャンクに分割し、個別にロードします。これにより、メモリ消費量が削減され、プロセスが高速化されます。

キー作成の高速化

データをロードした後のキーの再構築は、長時間の操作になる可能性があります。以下にいくつかの提案を示します:

  • 一括挿入: LOAD DATA INFILE ステートメント内で BULK INSERT 句を使用して、キーを含むデータを一度にインポートします。
  • 適応ハッシュ インデックス: 適応ハッシュ インデックス (innodb_adaptive_hash_index=ON) を有効にして、頻繁に使用されるクエリのインデックス作成を高速化します。
  • 並列インデックス作成: 可能であれば、並列インデックス作成を使用します。 (innodb_Parallel_alter=ON) により、インデックス作成に複数のスレッドが作成され、所要時間が短縮される可能性があります。

低速クエリの終了

実行を続ける低速クエリを終了するには終了後は、次の点を考慮してください:

  • 接続を再試行: MySQL サーバーを切断して再接続し、クエリを正常に終了します。
  • クエリ ID を使用: SHOW PROCESSLIST を使用してクエリの ID を特定し、KILL [QUERY_ID] を使用して強制終了します。
  • MySQL を再起動します: 最後の手段として、MySQL を再起動すると、実行中のクエリがすべて終了します。ただし、サービスの中断を引き起こす可能性があります。

以上がキーを持つテーブルのデータ インファイルのロードを使用して MySQL データ インポートを最適化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート