質問: 1件あたりの処理時間を検討する際に いつもお世話になっております。 solaris9、oracle9iでの質問です。 現在dbサーバの処理能力を試算するための指針を考えています。 対象となるテーブルの大きさやサーバスペックに依存する部分もあるかと思いますが、 一般的な処理速度を40μs/件としている企業様の情報を基準にしようかと考えました。 しかし、検索処理と更新処理では性質が違い処理時間に差が出るので、 selectを10μs/件 insertを30μs/件 deleteを30μs/件 truncateを30μs/件 と考える事にしました。 ここで皆様に質問なのですが、これは現実的なのでしょうか? またこれが現実的で無い場合は、どのくらいの処理時間を見込めば良いのでしょうか?
回答: 全て一概には言えないですね。 select文は非常に複雑さは多岐にわたりますし、 フェッチ件数によっても全然違ってきます。 insertは必ず1文で1件だけ入るため他と比べるとかなり 1文あたりの性能は安定していると言えるでしょう。 deleteも削除対象件数によってどうとでも変わります。 truncateは対象のテーブルのエクステント数によって変わってきます。 まずは、それぞれがどれほどの件数やエクステント数を 対象とするかが前提としてなければ何ともいえないです。 一番よいのは想定される平均的なパターンを設定してから それを実現するようなpl/sqlを書いて実測することです。 pl/sqlは通常のpro*cアプリやjavaといったものよりかなり 軽いためわざとリテラル値をセットしたり、安全率を 多めに取ったりして安全側に倒す必要があります。