1

ASPX ページを介して構築された大規模な SQL クエリを実行すると、次の 2 つの項目が SQL プロファイラーに表示されます。

 Event Class            TextData                                           ApplicationName             CPU    Reads   Writes
    SQL:BatchCompleted     Select N'Testing Connection...'               SQLAgent - Alert Engine     1609     0 0
    SQL:BatchCompleted     EXECUTE msdb.sbo.sp_sqlagent_get_perf_counters SQLAgent - Alert Engine     1609     96    0

これらの CPU はクエリと同じなので、そのクエリは実際には 1609*3=4827 かかりますか?

case でも同じことが起こります:

Audit Logout

これを制限できますか?SQL Server 2005 を使用しています。

4

4 に答える 4

3

まず第一に、SQL プロファイラーに表示される内容の一部は累積的であるため、常に数値を加算できるとは限りません。たとえば、SPCompleted イベントは、それを構成するすべての SPStatementCompleted イベントの合計時間を表示します。それがあなたの問題かどうかはわかりません。

CPU を改善する唯一の方法は、実際にクエリを改善することです。インデックスを使用していることを確認し、読み取る行数を最小限に抑えるなどしてください。これらの手法のいくつかについて経験豊富な DBA と協力するか、本を読んでください

私が考えることができる唯一の軽減策は、クエリが実行されるCPU の数を制限することです (これは、並列度またはDOPと呼ばれます)。これは、サーバー レベルで設定することも、クエリ レベルで指定することもできます。マルチ プロセッサ サーバーを使用している場合、これにより、実行時間の長い 1 つのクエリがボックス上のすべてのプロセッサを占有することがなくなります。これにより、他のクエリを実行するために 1 つまたは複数のプロセッサが解放されます。

于 2009-01-07T18:43:10.563 に答える
2

SQL Server 2008 には、役立つ可能性がある新しい "リソース ガバナー" があります。SQL Server 2008 を使用しているかどうかはわかりませんが、こちらをご覧ください。

于 2009-01-07T14:51:36.240 に答える
2

いいえ、合計で 1609 ミリ秒の CPU が必要です。期間は?SQL Agent クエリが並列処理を使用しているとは思えないので、私は同じか、それより少し多いと思います。

CPU を使用してバックグラウンド プロセスを削減しようとしていますか? その場合は、SQL エージェントを無効にして (たとえば、バックアップなし)、スイッチ -xを使用して SQL Server を再起動することにより、機能を減らします。

また、「監査ログアウト」イベントを停止することもできません...これは、接続を切断または閉じるときに発生することです。

ただし、プロセッサを最大化していますか? その場合、クエリ用の「ユーザー」メモリと、ページングまたは (禁止されている) RAID 5 ディスクでのパリティの生成に使用される「システム」メモリを区別する必要があります。

多くの場合、CPU 使用率が高い問題は、RAM を増やしてディスク構成を改善することで解決できます。

于 2009-01-07T20:05:37.603 に答える
1

これは接続文字列の問題です。監査ログアウトが CPU を大量に消費する場合は、別の接続文字列で試してみてください。

于 2010-10-24T09:59:02.237 に答える