- PR -

ODP.netのDB検索速度の差異について

1
投稿者投稿内容
ime
会議室デビュー日: 2006/09/19
投稿数: 4
投稿日時: 2006-11-06 09:28
VB.netで作成されたアプリケーションの性能テストを行っています。
DBからデータを取得する部分(サーバ側のPL/SQLから取得)でODPを使用している
のですが、1回目の検索と2回目の検索でデータ取得にかかる時間に随分差があ
ります。

DBのキャッシュにのった事が原因かと思い、キャッシュされた状態とされていな
い状態でPL/SQLのみの実行時間を計測してみたのですが、AP側から取得にかかる
時間差に比べると差がなく、DBキャッシュが原因ではなさそうでした。

データ取得時にDataSet型オブジェクトにデータを格納するのですが、一度取得
したデータはDataSet型にキャッシュされたままになるのでしょうか?

※DataSet取得はOracleDataAdapter.fillで実行しています。


かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-11-06 10:17
引用:

imeさんの書き込み (2006-11-06 09:28) より:

DBのキャッシュにのった事が原因かと思い、キャッシュされた状態とされていな
い状態でPL/SQLのみの実行時間を計測してみたのですが、AP側から取得にかかる
時間差に比べると差がなく、DBキャッシュが原因ではなさそうでした。


どの部分で時間を計測しましたか?
一発目は接続プールに空きが無くて実際にOracleに接続に行っている時間かも知れません。
ime
会議室デビュー日: 2006/09/19
投稿数: 4
投稿日時: 2006-11-06 13:49
返信ありがとうございます。

引用:

どの部分で時間を計測しましたか?
一発目は接続プールに空きが無くて実際にOracleに接続に行っている時間かも知れません。



DataSet取得部分(OracleDataAdapter.fill)です。
その前にコネクションの取得を行っているので、接続に行っている時間ではないと
思っているのですが。

補足ですが、実行前にOracleCommandにFetchSizeの設定を行っています。
FetchSizeには取得するデータ容量に見合った値を設定しているはずなのですが、そ
の設定が間違っているとレスポンスに影響するのでしょうか。




かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-11-06 14:10
引用:

imeさんの書き込み (2006-11-06 13:49) より:

DataSet取得部分(OracleDataAdapter.fill)です。
その前にコネクションの取得を行っているので、接続に行っている時間ではないと
思っているのですが。


コネクションの取得というのは何ですか?
渡されたコネクションが Open されていなければ Fill が呼び出された時に Open しに行くとおもうのですが、
一度 OracleCommand を使って時間測定をしてみてはどうでしょうか?

引用:

補足ですが、実行前にOracleCommandにFetchSizeの設定を行っています。
FetchSizeには取得するデータ容量に見合った値を設定しているはずなのですが、そ
の設定が間違っているとレスポンスに影響するのでしょうか。


FetchSize に関しては @IT のこの記事が詳しく書かれています。
http://www.atmarkit.co.jp/fdb/rensai/odpdotnet03/odpdotnet03_2.html


[ メッセージ編集済み 編集者: かるあ 編集日時 2006-11-06 14:17 ]
HIRO
大ベテラン
会議室デビュー日: 2002/06/21
投稿数: 109
投稿日時: 2006-11-06 14:45
少し古い話ですが、2003年のdotNet Magazine 2月号で特集がありました。
ご参考まで。

_________________
--------------------------------------------
HIRO's.NET PowerShell,VB.NET,C#のTipsを掲載しています
HIRO's.NET Blog PowerShell,VB.NET,C#を中心とした技術ネ
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-11-06 22:00
 $ORACLE_HOME$/network/admin/sqlnet.ora 内の、SQLNET.AUTHENTICATION_SERVICES の値が、(NTS) になっていたりするとか? →(NONE) にすると早くなる。

_________________
ime
会議室デビュー日: 2006/09/19
投稿数: 4
投稿日時: 2006-11-07 11:53
[quote]
コネクションの取得というのは何ですか?
渡されたコネクションが Open されていなければ Fill が呼び出された時に Open しに行くとおもうのですが、
一度 OracleCommand を使って時間測定をしてみてはどうでしょうか?
[quote]

見直してみたのですが、既にOpenはされている状態でした。
皆様情報ありがとうございます。もう少し調べてみます。




1

スキルアップ/キャリアアップ(JOB@IT)