プロが教えるわが家の防犯対策術!

5000万件のデータを格納しているテーブルのある項目に対して全件updateを実行しようと思っているのですが、処理時間の増大やシステムメモリ不足等が懸念されます。尚、更新処理には関数を使用します。大変恐縮ですが、何か効率良く処理するための方法をご教示頂きたく存じます。例えば、数万件単位でcommitする方法等。。

A 回答 (1件)

どうしても全件ということであれば(例えば、全員に1ポイントを追加付与)後はインデックスがあるとそれも更新対象となってしまうので、極力インデックスを減らしたり、使うとしてもサイズが小さくなるようにしたり(カラム数を減らす)とか。



どのみち、その処理を完了するには、5000万件分のテーブルデータへのアクセス(Read&Write)が発生するので、肝は必要以上のアクセス、つまりインデックス等へのアクセスを発生させない事かと。物理設計を見直せるのであれば、データとログのディスクI/Oを散らすとかも出来ますね。それなりのハードウェアである必要がありますが・・・。

なお、中間でのコミットは一貫性の保持が出来なくなるためオススメは出来ません。あと、チェックポイントの処理は自動でやるはずなので考慮する必要はないでしょう。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!