次のいずれかを経験し、解決策を見つけましたか。
私たちのウェブサイトのバックエンドの大部分はMS SQL Server 2005です。毎週または2週間、サイトの実行が遅くなり、SQLでのクエリの完了に時間がかかります。使用したいクエリがあります。
USE master
select text,wait_time,blocking_session_id AS "Block",
percent_complete, * from sys.dm_exec_requests
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2 order by start_time asc
これはかなり便利です... SQLサーバーに対してその時点で実行されているすべてのスナップショットを提供します。なんらかの理由でCPUが100%に固定されていて、Activity Monitorがロードを拒否している場合でも(一部のユーザーはそこにいると思います)、このクエリは引き続き返され、どのクエリがDBを強制終了しているのかを確認できます。
これを実行したり、SQLの速度が低下し始めたときにアクティビティモニターを実行したりすると、問題の原因となっている特定のクエリが表示されません。MS SQLサービスを再起動すると、すべてが正常になり、速度が速くなります-再び発生するまで1〜2週間。
何も変わったことはないと思いますが、これはほんの数ヶ月前に始まったばかりです…アイデア?
-追加
このデータベースの速度低下が発生した場合、1時間に10万ページビュー(1日のビジー時間)または1時間に1万ページビュー(遅い時間)を取得しても、すべてのクエリの完了に通常より長い時間がかかることに注意してください。サーバーは本当にストレスを受けていません-CPUは高くありません、ディスク使用量は制御不能ではないようです...それはインデックスの断片化または一種のようなもののように感じますが、それはそうではないようです場合。
上に貼り付けたクエリの結果を貼り付ける限り、実際にはできません。上記のクエリは、タスクを実行するユーザーのログイン、クエリ全体などを一覧表示します。データベース、テーブル、列、およびログインの名前をオンラインで渡したくありません:)... Iその時点で実行されているクエリは、常時実行されている通常の標準クエリであり、標準的なものではありません。
-3月24日
前回の再起動から約2週間になります。いくつかの変更を加えました。一時テーブルを頻繁に使用していて、まったく不要なクエリをいくつか見つけ、開発者にその方法を変更させました。常に(ゆっくりと確実に)成長しているいくつかのデータベースのサイズを、その成長に合わせてインテリジェントなサイズに調整しました。すべての自動拡張の設定も調整して、よりインテリジェントになりました(すべてが1 MBの拡張に設定されていました)。最後に、MSDBを少しクリーンアップしました。私たちはログ配布を行っており、何年も何年にもわたるバックアップポイントを保持する必要はありませんでした。これを数か月だけに保つスクリプトをいくつか作成しました。問題がまだ解決されているかどうかを判断するには時期尚早なので、このスレッドを更新し続けます。