「ロックされたわけではない」のに終わらない処理がある(パフォーマンストラブル):SQL Serverトラブルシューティング(53)(1/2 ページ)
本連載は、「Microsoft SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は、「ロックされたわけではないのに終わらない処理がある場合の確認方法と対処方法」を解説します。
本連載では、「Microsoft SQL Server(以下、SQL Server)」で発生するトラブルについて、「なぜ起こったか」の理由とともに具体的な対処方法を紹介していきます。
トラブル 40(カテゴリー:処理遅延):「ロックされたわけではない」のに終わらない処理がある
「Windows Server 2012 R2」上に「SQL Server 2016 RTM」をインストールした環境を想定して解説します。
トラブルの実例:これまで問題がなかったのに、急に処理が遅くなった。
SQL Serverのパフォーマンスログを確認すると、普段の傾向とは多少異なる部分はあったが、それが明らかなボトルネックになるほどではなく、他の処理にも影響は及ぼしてはいなかった。
トラブルの原因を探る
まずは前回のトラブル事例と同様に、SQL Serverの内部動作を調査するツール「DMV(Dynamic Management View)」で「dm_exec_requests」のステータスを確認します。ステータスは「running(実行中)」でした。前回のトラブル事例では、処理が中断された「suspended(停止)」のステータスとなってしまい、ロック待ちが発生していたことが原因でしたが、今回は状況が違います。
今回のトラブル事例では、SQL Serverの「クエリストア」機能を事前に有効にしたシステムでトラブルシューティングを行います。クエリストアは、実行された処理時間や実行プランを保存し、確認できるSQL Server 2016から実装された新機能です。以前のバージョンでもそれらの情報を取得する方法はありましたが、クエリストアによって「より簡単」に情報を取得できるようになりました。
クエリストアは既定では無効になっているので、システムをSQL Server 2016に刷新したならば、この機能も有効にしておくことをお勧めします。設定は、「データベースのプロパティ」→ページの選択で「クエリストア」を選ぶ→操作モード(要求)を、オフから「読み取り、書き込み」に変更すると機能が有効になります(図1)。
クエリストアでは「その後に実行したクエリの処理状況」を収集できます。クエリストアで収集した結果は、データベースを展開した中の「クエリストア」メニューから確認できます。今回は、クエリストアの「リソースを消費するクエリの上位」を展開して、その状況を探ります(図2)(図3)。
表示されたクエリの中から「合計実行時間が長いクエリ」を探ると、プランID「8」とプランID「10」、2つのプランがリストアップされました(図3の右上のグラフ)。このグラフの縦軸は実行時間を示していますが、それぞれ実行時間がかなり違うことを確認できます。つまりこのシステムでは、『これまでは、処理時間の短いプランID「10」で実行されていたクエリが、何らかの理由でプランID「8」に変更された』ために、処理時間が長くなったことが分かりました。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 「SQL Server 2016」に搭載される新たなセキュリティ対策を追う
パブリックプレビューが公開されているマイクロソフトのRDB次期版「SQL Server 2016」。特徴の1つとするセキュリティ対策機能のポイントと目指すところをキーパーソンに聞いた。 - そもそも、リレーショナルデータベースとは何か?
データベースを基礎から勉強し理解を深めていくことは簡単なことではありません。本連載では、データベースに対するハードルを少しでも低くするために、初心者の方に必要なデータベースの基本から、障害対策やチューニングといった実践に即した内容までを幅広く解説していきます。今回は、データベースの役割と、それを管理するソフトウェアであるDBMSの基本機能について解説します。【更新】 - データの登録を行うINSERT文
- 複数の条件を指定してSELECT文を実行する
前回は、SELECT文の初歩の初歩を解説しました。今回は、複数の条件を指定して、目的のデータを取り出す方法を解説します(編集部) - Oracle運用の基本「ログ」を理解しよう
本連載では、Oracle Database運用の鍵となるトラブル対処法について紹介していきます。第1回、第2回では情報収集の要となるログについて見ていきます。ログの出力情報は10gと11gとでは大きく異なる点がありますので、それぞれについても確認しておきましょう。