0

次のコマンドを SQL Server 2005 に送信するクライアント アプリがあります。特定の時間帯に、標準が 300 ミリ秒未満のときに一部の要求の実行に 2 ~ 8 秒かかるパフォーマンスの問題が発生しています。SQL Server のオプションと、サーバーに影響を与える可能性のあるすべての外部変数を調査しています。

ここでの私の質問は、どのように/なぜリクエストに 8 秒かかることがあり、この間に他の多くの同一のリクエストがこの 8 秒のウィンドウの間に開始および終了するのかということです。8 秒間の通話が終了しない原因は何ですか?

この間にサーバー プロファイラーを実行すると、すべての呼び出し (長期および短期) で読み取り数は約 20 で、書き込み数は 5 未満です。

挿入されるテーブルには、約 22M のレコードがあります。約 30 日分のデータを保持しています。このデータを毎日アーカイブし、毎日の挿入テーブルを小さくしてインデックスを解放するようにアプローチを変更する可能性がありますが、ここで何が起こっているのかを本当に理解したいと思っています.

  • このテーブルにはトリガーがありません。
  • GUID、Time、および WebServerName の 3 つのインデックスがあります (いずれもクラスター化されていません)。

送信されるコマンドは次のとおりです。

exec sp_executesql N'Insert Into WebSvcLog_Duration (guid,time,webservername,systemidentity,useridentity,metricname,details,duration,eventtype)values(@guid,@time,@webservername,@systemidentity,@useridentity,@metricname,@details,@duration,@eventtype)',N'@guid nvarchar(36),@time datetime,@webservername nvarchar(10),@systemidentity nvarchar(10),@useridentity nvarchar(8),@metricname nvarchar(5),@details nvarchar(101),@duration float,@eventtype int',@guid=N'...',@time='...',@webservername=N'...',@systemidentity=N'...',@useridentity=N'...',@metricname=N'...',@details=N'...',@duration=0.0,@eventtype=1
4

1 に答える 1

0

考えられる理由は、ヒープの断片化です。ある種のインデックスのメンテナンスが行われているかどうかについては言及していないので、存在しないと思います。断片化を最小限に抑える最善の方法は、単調な値 (自然に増加する順序を持つ列) でクラスター化インデックスを作成することです。時刻列が何を表しているのかはわかりませんが、挿入時刻であれば、クラスター化インデックスの候補になる可能性があります。そうでない場合は、テーブルに挿入された時間をキャプチャする列を追加し、その上にクラスター化インデックスを作成します。

于 2014-03-11T17:05:03.803 に答える