- 締切済み
サーバ負荷を抑える大量データの更新方法について
5000万件のデータを格納しているテーブルのある項目に対して全件updateを実行しようと思っているのですが、処理時間の増大やシステムメモリ不足等が懸念されます。尚、更新処理には関数を使用します。大変恐縮ですが、何か効率良く処理するための方法をご教示頂きたく存じます。例えば、数万件単位でcommitする方法等。。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
noname#45409
回答No.1
どうしても全件ということであれば(例えば、全員に1ポイントを追加付与)後はインデックスがあるとそれも更新対象となってしまうので、極力インデックスを減らしたり、使うとしてもサイズが小さくなるようにしたり(カラム数を減らす)とか。 どのみち、その処理を完了するには、5000万件分のテーブルデータへのアクセス(Read&Write)が発生するので、肝は必要以上のアクセス、つまりインデックス等へのアクセスを発生させない事かと。物理設計を見直せるのであれば、データとログのディスクI/Oを散らすとかも出来ますね。それなりのハードウェアである必要がありますが・・・。 なお、中間でのコミットは一貫性の保持が出来なくなるためオススメは出来ません。あと、チェックポイントの処理は自動でやるはずなので考慮する必要はないでしょう。