エンタープライズライブラリのコードを読んでいるうちに、「パラメータキャッシング」というテクニックを使用していることがわかりました。ADO.NETでのパラメータキャッシュのパフォーマンスはどのように向上しますか?
パフォーマンスがどのように改善され、どのようなシナリオが役立つか説明できますか?
純粋にDbParameterオブジェクトの作成コストからパフォーマンスが得られているのですか、またはSQL Server側でクエリプランに関して何か他に何か起こっていますか?
初めてDbCommandオブジェクトをアセンブルし、対応するDbParameterオブジェクトでワイヤリングすると、SQL Serverはこの時点で実行計画をキャッシュし、その後同じパラメータを使用して同じプロシージャを呼び出すと思いますテンプレートはサーバー上の既存のキャッシュされた実行計画を再利用するでしょうか?
残念ですが、DeriveParametersはいつ呼び出されますか? – manning18
クラスのデータベースファミリには、ストアドプロシージャの 'DiscoverParameters'を可能にするメソッドがあります。これは、CRUDストアドプロシージャのパラメータにクラスのデータメンバーを動的にマップするような操作を行うデータアクセスレイヤーや、データを入力する必要がないようにするために使用できます。 –
パラメータキャッシングは、日々のADO.NETの使用に何らかの利点を追加しますか?たとえば、DbCommand.CommandType = StoredProcedureを設定し、格納されているproc名を指定してParametersコレクションに追加しますか?ストアドプロシージャのパラメータを事前に知っていたら、DiscoverParametersはいつ呼び出されますか? – manning18