ホームページ >データベース >mysql チュートリアル >1 億 2,000 万件のレコードを含むテーブルを効率的に更新するにはどうすればよいですか?

1 億 2,000 万件のレコードを含むテーブルを効率的に更新するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-03 11:57:38280ブラウズ

How Can I Efficiently Update a Table with 120 Million Records?

1 億 2,000 万レコードの更新戦略: 効率的なアプローチ

1 億 2,000 万のレコードを含むテーブルを更新するのは、大変な作業になる場合があります。デフォルトの更新アプローチではリソースが枯渇し、長期間かかる可能性があります。この課題を克服するには、より効率的な方法として、SELECT ステートメントを使用して別のテーブルにデータを設定します。

セカンダリ テーブルにデータを設定する手順

クラスタード インデックスのないテーブルの場合同時 DML がない期間中は、次の手順を適用できます:

  1. クローンBaseTable: SELECT ステートメントを使用して、dbo.BaseTable からのデータと -1 に設定された新しい INT 列を含む clone.BaseTable を作成します。
  2. クローンを修正します:クローンテーブルにインデックスや制約などを再作成します。
  3. スワップテーブル: ALTER SCHEMA ... TRANSFER を使用して、元のテーブルとクローン テーブルを交換します。
  4. クリーンアップ: 古いテーブルを削除します。

テーブルの場合クラスター化インデックスやその他の複雑性がある場合、より詳細なプロセスは次のとおりです。必須:

単純でないシナリオの詳細なプロセス

  1. BaseTable の再作成: クラスター化されたスキーマを使用して、元のテーブルのクローンを作成します。インデックス、ID 列、計算列、および新しい INT
  2. 制約の除外: トリガー、外部キー制約、非クラスター化インデックス、チェック制約を省略します。
  3. テスト挿入:クローンテーブルの検証のための小さな挿入操作
  4. Truncate Clone: クローン テーブルをクリアします。
  5. Bulk Insert: 一括ログまたはクローン テーブルへの一括挿入を実行します。簡易リカバリモード。
  6. 再作成制約: すべての非クラスター化制約、インデックス、トリガー、チェック制約を 1 つずつ再作成します。
  7. スキーマ転送: クローン テーブルを dbo スキーマと元のテーブルに移動します。バックアップ スキーマにコピーします。
  8. True-Up操作: 該当する場合は、必要な調整操作を実行します。

結論

この選択と入力のアプローチを利用すると、次のようになります。大きなテーブルを効率的に更新できます。この方法はテーブルの更新に必要な時間を大幅に短縮できるため、多数のレコードを持つテーブルにとって実行可能なソリューションになります。

以上が1 億 2,000 万件のレコードを含むテーブルを効率的に更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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