デッドロックを監視する方法


11

SQL Server 2005/2008のデッドロックのトラブルシューティングを開始する時期と方法は?アラートは、SQL Serverのパフォーマンス条件アラート、オブジェクト-> SQLServer:Locks、カウンター->ロック待機/秒、インスタンス:_Total、カウンターが値を超えた場合にアラートを介してSSMSでオンになります。これは、予防的な監視方法ですか?許容値は何ですか?よろしくお願いします。ありがとうございました!!!

回答:


7

3

まず最初に、デッドロックグラフを見て、何が起こっているのかを正確に確認します。次に、オプションを検討します。通常は、a)アプリケーションを変更して、オブジェクトをロックする順序で標準化します(たとえば、可能であれば、アプリケーションロジックを考慮して、常にアルファベット順にテーブルをロックするように開発者と取り決めます)またはb )各トランザクションで実際に適切な分離レベルで動作しているかどうかを確認します。


stackoverflow.com/a/112256/14731によると、一貫したロック順序はデッドロックを防止しません。
ギリ2013年

3

私は2つの主要な問題の自動サーバー側トレースを使用します。

  • 長いクエリ(環境に長い期間を設定します)

  • デッドロック-デッドロックグラフとLock:Deadlockチェーンを確認する

毎日トレースファイルを取得し、アクションを監視できます。スケジュールされたイベントが問題を引き起こしていないか確認してください。プロダクションのプロファイリングの詳細については、このプロダクションのデータベースでのSQLプロファイラーの使用に関する質問をご覧ください。


3

この本のオンライン記事で説明されているように、トレースフラグを設定してみてください:http ://msdn.microsoft.com/en-us/library/ms178104%28SQL.90%29.aspx

DBCC TRACEON(1204)
DBCC TRACEON(1222)

-SQL 2005の新機能
DBCC TRACEON(-T1222)


1

SQL Server管理パックを備えたSystem Center Operations Manager(SCOM)は、メッセージ1205のログを有効にすると、デッドロックを警告できます。次のSQLクエリで有効にできますEXEC sp_altermessage 1205, 'WITH_LOG', 'true'

また、「オブジェクト名とインデックス名がデッドロックグラフに入力されないのはなぜですか?」に対する私の回答を参照しください。イベントバッファーからデッドロック情報を引き出し、デッドロックグラフをxdlファイルとして書き込むPowerShellスクリプトの場合、SQL Management Studio 2012以降で開くか、メモ帳で表示して詳細を確認できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.