「データベースの処理遅延」の課題解決に必要な3つのポイント:SQL Serverトラブルシューティング(36)
本連載は、「Microsoft SQL Server」で発生するトラブルを「どんな方法で」「どのように」解決していくか、正しい対処のためのノウハウを紹介します。今回は、「処理遅延の対処に必要な3つのポイント」を説明します。
本連載では、「Microsoft SQL Server(以下、SQL Server)」で発生するトラブルについて、「なぜ起こったか」の理由とともに具体的な対処方法を紹介していきます。
前回まではシステムの可用性を高める「フェイルオーバー」にまつわるトラブル事例を紹介してきました。今回から、SQL Serverで発生する5大トラブルのうち、5つ目のカテゴリーとなる「処理遅延」に関するトラブル事例と解決策を紹介していきます。
「処理遅延」はなぜ発生するのか 解消のために把握すべき項目
SQL Serverに限らず、データベースシステムで多く発生するトラブルの1つに「処理遅延」の問題があります。
単に「遅くなった」ことを解決したいとしても、発生状況によって原因は数多くあります。原因の調査に時間を要したり、原因が分からないまま諦めてしまったりすることもあるでしょう。トラブルの解決には、発生している現象と原因を的確に把握することが必須となります。このことは、本連載でこれまで何度もお伝えしてきた通りです。
処理遅延の問題が発生したときに把握しておくべき情報は、以下の3つです。
1:遅延の「影響範囲」を調べる
まず、遅延が業務のどこまで影響を及ぼしているか、システムや対象ユーザーの範囲を確認します。例えば、以下が考えられます。
- アプリケーションがデータベースに接続するのに時間がかかる
- アプリケーションがデータベースに接続してから処理の応答に時間がかかる
- データベースに接続する全ての処理が遅い
- データベースに接続する一部の処理だけが遅い
- データベースに接続する一部のクライアントからのみ遅い
このように範囲を確認することで、どこから調査を始めれば効率的かを判断できます。
併せて、特定の処理だけが遅い場合には、それが具体的にどんな処理かも確認します。例えば、以下のように分類します。
- 1つのステートメントだけとなる重い集計処理
- 細かいトランザクションの集合処理
2:遅延の「発生頻度」を調べる
続いて、遅延の発生頻度を確認します。遅くなったタイミング、解消の有無、再発の有無などです。例えば、以下のようなパターンがあります。
- 構築当初から遅かった
- 構築当初は問題なかったが、徐々に遅くなり、そろそろ耐えられなくなってきた
- 構築当初は問題なかったが、ある時点で遅くなり、以降それが続いている
- 特定のタイミングでのみ遅くなる
- 不定期に遅くなることがある
- 1回だけ遅くなった
3:遅延の「深刻度」を調べる
最後は、遅延の深刻度を「具体的に数値化」して確認します。数値化しておくと、問題が解消されたと判断できる目安や目標にしやすくなります。例えば、以下のような項目をリストアップします。
- 普段は0.1秒だった処理が、0.3秒になった(0.2秒遅くなった/33%の速度になった)
- 普段は5分の処理が、1時間かかった(55分遅くなった/8%の速度になった)
- 普段は2時間程度の処理だが、10時間経過しても終わらない(8時間以上遅くなった/20%以下の速度なった)
これら3つの項目を確認した上で処理遅延に対処するトラブルシューティングを行うと、その原因を絞り込みやすくなります。
最初は影響範囲や発生頻度を把握しにくく、苦労するとも思います。コツとしては、意識して多方面へのヒアリングや切り分けの実施を継続することです。じきに慣れ、取り組みが理解されることで多方面の協力が得られるようにもなるので、必要な情報を収集しやすくなっていくはずです。
次回から、処理遅延の調査を進める上で有効となるログ採取や情報収集のヒントを紹介していきます。
筆者紹介
内ヶ島 暢之(うちがしま のぶゆき)
ユニアデックス株式会社 NUL System Services Corporation所属。Microsoft MVP Data Platform(2011〜)。OracleやSQL Serverなど商用データベースの重大障害や大型案件の設計構築、プリセールス、社内外の教育、新技術評価を担当。2016年IoTビジネス開発の担当を経て、2016年現在は米国シリコンバレーにて駐在員として活動中。目標は生きて日本に帰ること。
椎名 武史(しいな たけし)
ユニアデックス株式会社所属。入社以来 SQL Serverの評価/設計/構築/教育などに携わりながらも、主にサポート業務に従事。SQL Serverのトラブル対応で社長賞の表彰を受けた経験も持つ。休日は学生時代の仲間と市民駅伝に参加し、銭湯で汗を流してから飲み会へと流れる。
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とでは大きく異なる点がありますので、それぞれについても確認しておきましょう。