Webエンジニアのちび活動記

Webエンジニアのちび活動記

2007.12.12
XML
カテゴリ: プログラム関連
プリペアド・ステートメントを使うと、SQLのコンパイル処理の負荷が少なくなり、パフォーマンス上有利って話を聞いたので、実際に自分の環境でテストしてみました。

テスト方法:単純なSQLを1万回実行する。キャッシュが効かないように全て違うSQL文を実行する。
まぁ簡単に言えば、ちょうど1万以上のデータが手元にあったので、それをループで1個ずつ検索したってこと(まったく実用上役に立たないプログラムだが(^^;)ちなみにJava + PostgreSQL8.1

なんと結果、プリペアド・ステートメントを使うと処理時間が約半分になったとさ。。。

ここで終わっているレポートを読んでいろいろと疑問が浮かんで自分でテストしてみたのだが。。。

どんな疑問かというと、
今回のテストでは、約2秒かかっていたものが1秒になって、大きな効果があったのだが、、、

ところで、プリペアド・ステートメントを使うとどうして負荷が減るのか?
簡単に説明すると、SQLを実行する時に2つの段階があって

って感じなんだが、プリペアドを使うと第1段階のコンパイル処理を毎回やらなくても済むと
(実際のアプリだと、プリペアド使わなくてもある程度キャッシュが効くが、テストではわざとキャッシュされないようにした)
ということは、1万回実行して縮んだ時間は約1秒!という絶対値の方が重要なのではないかと。
だって約半分になったっていっても、実際に検索する処理がもっと重い処理の場合はそんなに効果がないわけで・・・
(うーん、このあたりの説明は難しい)

結論、もっと遅いCPUを使っていて(テストは最新のパソコンで実施)CPUがボトルネックになっている場合(今時DBでCPUがボトルネックになることは少ないと思うが)もしくは1秒間に1万回近くSQLを実行するようなアプリを使っているなら健闘する余地があるってことだね。
それ以外の場合は、パフォーマンスアップを期待していると期待はずれになる可能性があるってことです。

以上、私の自分勝手な考察でした。
真実を知りたい方は自分の環境でテストしてみることをお勧めします。


わかりやすいOracleパフォーマンス・チューニング





お気に入りの記事を「いいね!」で応援しよう

Last updated  2007.12.12 20:58:26
コメントを書く
[プログラム関連] カテゴリの最新記事


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

Calendar

Favorite Blog

ネットのお得情報 ク… ネットのお得情報さん
ビジネス指向のエン… ビジネス指向のエンジニアさん
ま~るのどたばた日… ま〜る 2006さん
肉体改造 筋肉増強&… 肉体改造2796さん
スイーツ探検隊 美味… スイーツ探検隊 楽天人気お取り寄せさん
北国カニ探検隊、タ… 北国カニ探検隊さん
楽天@シルバーアク… 楽天シルバーアクセサリーさん
楽天ワイン@シャト… 楽天ワイン@お勧めワイン探検家さん
ダンディ専門店 メン… 楽天@メンズアクセサリーさん
ゆみちゃんの大好き… 楽天プリン@人気お取り寄せスイーツさん

© Rakuten Group, Inc.
X
Mobilize your Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: