Perl DBI 経由でアクセスする Oracle 10g を使用すると、数千万行のテーブルがあり、1 秒あたり数回更新され、別のプロセスからより頻繁に読み取られます。
すぐに、更新頻度が 1 桁 (おそらく 2 桁) 増加します。更新ごとにコミットするのではなく、N 個の更新ごとにコミットすることでパフォーマンスが向上すると誰かが提案しました。
いくつかの質問を聞きたいんです:
- それはより速いか遅いか、または依存します(新しい負荷の適切なシミュレーションを取得できるようになり次第、両方の方法でベンチマークを実行する予定です)
- なぜそれがパフォーマンスを助ける/妨げるのか.
- 「場合による」場合は、何に基づいていますか?
- それが役立つ場合、 N の最良の値は何ですか?
- 地元の DBA は、必要なときに有益な率直な回答を提供できないのはなぜですか?
(実際、私はその答えを知っています) :-)
編集:
@codeslave : ありがとうございます。ところで、コミットされていない変更を失うことは問題ではありません。更新に使用された元のデータは、すべて問題がないことを確認するまで削除しません。ところで、掃除婦はサーバーのプラグを抜きました。2 回 :-)
いくつかのグーグルは、ロールバックセグメントに関連する問題のために役立つ可能性があることを示しましたが、数十ごとに N の経験則はまだわかりませんか? 何百?千 ?
@diciu : すばらしい情報です。必ず調べます。