この質問は、以前に尋ねられた質問のフォローアップです。
このような簡単なプログラムを作成しました。
string s;
do
{
using (SqlConnection conn = new SqlConnection("POOLEDCONN"))
{
using (SqlCommand cmd = new SqlCommand("", conn))
{
s = (string) cmd.ExecuteScalar();
Code2IncrementPerfomanceCounter
}
}
} while (!string.IsNullOrEmpty(s))
クエリは文字列(nvarchar(max)、現在の最大サイズ9k)を返しますが、SQLServerと.NETの間には多くの遅延があります。SQLプロファイラーはクエリの期間が0ミリ秒であると言っているので、データベースではないと思います。ネットワークは1ミリ秒未満で応答しているため、ネットワークであってはなりません。
このコードをテストサーバー(VMWare、SQLは仮想化されていません)で実行すると、1秒あたり最大600ループになります。アプリケーションは5%を超えるCPUを消費しません。なぜ速くならないのですか?SQLなどからデータを取得するためにストリーミングを使用する必要がありますか?
よろしくお願いします