2009-08-27 10 views
1

私はデータベースに対して任意のスクリプトを実行する.NETプログラムに取り組んでいます。ADO.NETコマンドオブジェクトを再利用することをお勧めしますか?

colleageは、データベース・アクセス・コードを書き始めたとき、彼は単にステートメントごとに再利用されるアプリケーション(などExecuteNonQuery()を呼び出し、CommandText/Type設定)の残りの部分に1つのコマンドオブジェクトを公開。

これは、毎回新たに解析されるため、これは繰り返された同一のステートメントにとって大きなパフォーマンスヒットであると思います。

私は疑問に思っています:これは、各ステートメントが前のステートメントと異なる場合(異なるパラメーターだけでなく、全く異なるステートメント)、実行速度も低下しますか?私は簡単にドキュメントの答えを見つけることができませんでした。

Btw、使用されるRDBMSはOracleですが、この質問はデータベース固有のものではないと思います。

P.S.私は同じCommandオブジェクトがスレッドセーフではないことを知っているが、これは問題ではない。

答えて

2

新しいコマンドオブジェクトの作成にはいくつかのオーバーヘッドがあります。したがって、特定の状況では、同じコマンドを再利用することができます。しかし、アプリケーション全体に対して一般的なケースが強​​制されるため、少し奇妙に思えます。

1

通常、パフォーマンスの低下はデータベースへの接続から発生しますが、ADO.NETはここで役立つ接続プールを作成します。

新しい文を毎回解析することを避けたい場合は、それらをストアドプロシージャに入れることができます。

あなたの同僚は、コマンドオブジェクトを再利用して他のプラットフォームで作業していたことから継承した古いスタイルのアプローチを使用していると思います。

関連する問題