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

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

DDD
DDDオリジナル
2024-12-31 17:57:10773ブラウズ

How Can I Efficiently Update 120 Million Records in a Database Table?

大量レコード更新操作の最適化

問題:
単純な UPDATE ステートメントは、数回実行した後でも失敗します。

解決策:

既存のテーブルを更新する代わりに、SELECT ステートメントを使用して新しいテーブルに必要な値を設定します。このアプローチにより、パフォーマンスが大幅に向上し、直接更新に伴うボトルネックが回避されます。

単純でない場合の手順:

  1. 必要な値を含む新しいテーブル構造:

    • 同じクラスター化インデックス、ID 列、計算列、および更新される新しい列を使用して、別のスキーマの下に元のテーブルを再作成します。
    • トリガーを除外します。 、外部キー制約、およびその他の必須ではない制約要素。
  2. 挿入操作をテストします:

    • 行の小さなサブセットを新しいテーブルに挿入して、
  3. 一括挿入の準備:

    • データベースを一括ログまたは単純な復旧モデルに設定します。
    • 新しいものを切り捨てるtable.
  4. 一括挿入を実行します:

    • TABLOCK を使用した単一の INSERT ステートメントヒント。
  5. データの整合性の検証:

    • 新しいテーブルをチェックして、更新が成功したことを確認します。
  6. 再作成制約とトリガー:

    • 別のバッチでスキーマを維持しながら、新しいテーブルにすべての非クラスター化制約、インデックス、トリガーを再作成します。
  7. スイッチテーブル:

    • 元のテーブルをバックアップ スキーマに移動し、新しいテーブルを目的のスキーマに移動します。
    • 必要な調整操作を実行して、発生した変更を調整します。更新プロセス中。

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

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