Reading Time: 1 minutes
この記事の所要時間: 約 3分

こんにちは、ManageEngineエンジニアの園部です。
本日は、近年人気のクラウドAzureから、Azure SQL Databaseの監視についての話題をお届けします。

近年、企業におけるクラウドサービスの利用率が右肩上がりに上昇しています。多くのインターネットサービス提供企業も、パブリッククラウドプロバイダー事業に注力するようなりました。Microsoftもその中の一つです。RightScaleの最新の調査によると、2017年の間でMicrosoftが提供するクラウドサービスのAzureの普及率が、34%から45%へ上昇しました。

MicrosoftのマネージドクラウドデータベースであるAzure SQL Databaseは、クラウドデータベースの中でも人気が高いサービスです。しかし、先進的なクラウドサービスと言えども、IT運用管理の面やアプリケーション開発の視点から見ると、オンプレミスのデータベースと同様の問題が発生します。

今回は、Azure SQL Databaseを監視する上で注意すべき4つの課題をご紹介します。


目次


ブロッククエリ

クエリのブロックはすべてのリレーショナルデータベースで発生する問題です。クエリブロックは時に、接続時間の延長を引き起こし、アプリケーション全体のパフォーマンスが低下する原因となります。

この問題を特定するためには、待機時間の詳細な情報を取得することによりブロックされたクエリを取得し、長時間実行やブロックされたクエリの履歴を追えるようにしておきましょう。
また、クエリがブロックされたときに通知するような仕組みを作っておくと、アプリケーションのパフォーマンス低下を即時検知し、問題が拡大する前に迅速に問題解決できます。

リソースのキャパシティプランニング

Azure管理者の多くは、リソースが適切に使用されているかを適切に判断することと、将来を見据えたキャパシティプランニングを行うことが難しいと感じています。

主要なパフォーマンス項目を監視して、リソース使用率が低い場合や過剰に使用されている場合を検知して、適切なリソース配分を行うことが重要です。一般的に把握しておくべきAzure SQL Databaseのパフォーマンス項目は以下の通りです。

メモリー

メモリーに問題が発生すると、アプリケーションの応答遅延、システム全体の速度低下、またはアプリケーションのクラッシュにつながる可能性があります。
SQLサーバーはメモリーを大量に消費することがあり、適切に監視しないとパフォーマンス低下の原因になる可能性があります。

多くのメモリーを使用しているアプリケーションと、十分なメモリがない状態で実行されているシステムを特定することが重要です。また、DTU(Database Throughput Unit)やRead/Writeの使用率などの主要なパフォーマンス指標を監視して、割り当てられたリソースが適切かどうかを判断することも重要です。
メモリの使用率が想定外の値となった場合に管理者へ通知する設定をすると、迅速なクエリ調整等が可能になるため、非常に有効です。

CPU

不十分なハードウェア割り当てや、突発的なCPUスパイク、複雑で時間のかかるクエリの実行は、CPUを原因とする遅延の原因になります。CPU使用率に関する情報を収集すると、データベースの効率性を確認するのに役立ちます。

ロックの競合

多数のプロセスが同じデータベースリソースへのアクセスを同時に要求すると、SQLサーバーの競合が発生し、最終的にロック競合が発生します。ロック競合を防ぐには、

  • データ競合を意味するロック待機を監視する
  • トランザクションを短くする
  • トランザクションの前にSQLを更新する

などの方法があります。

デッドロックは、2つの別々のプロセスが異なる順番でデータベースのリソースをロックしようとすることによって発生します。同じ順序でテーブルにアクセスするようにアプリケーションを開発することが重要ですが、万一、アプリケーションのプロセスにデッドロックが疑われる場合は、デッドロックの発生時に、関係者に通知できるようにしておくことが大切です。

失敗した接続

Azure SQLにはSQLデータベースへの接続数と同時リクエスト数に制限を設けています。接続のレビューや同時セッションの割合を監視し、Azure SQLデータベースのパフォーマンスを調整できるようにしましょう。

まとめ

Azure SQL Databaseを監視する場合に注意すべき項目を4つ紹介しました。

ポイント
以下の項目を監視していきましょう!
  • ブロッククエリ
    • 実行時間が長いクエリ
    • ブロックされたクエリ
  • リソースのキャパシティプランニング
    • メモリー
    • CPU
  • ロックの競合
  • 失敗した接続

Azure SQL Databaseのパフォーマンスにお困りの場合や、オンプレミスのデータベースをAzure SQLに移行する場合は、上記4項目を監視してアプリケーションのパフォーマンスを詳細に把握し、アプリケーションを利用するエンドユーザーのパフォーマンス体感を最適化しましょう。

※ 記事中のグラフイメージは、ManageEngineが提供するアプリケーションパフォーマンス管理ソフト『Applications Manager』の画面スクリーンショットです。 Applications Managerを活用すると、特定の作り込みをすることなく、簡単な設定だけでAzure SQLの監視をはじめることができます。

Azure SQL Databaseのパフォーマンス監視要件でお困りの際には、ぜひApplications Managerをご検討ください!

Applications Manager

サーバー・データベースなどのWebシステムの一元管理を実現するアプリケーションパフォーマンス管理ソフトウェア。設定が簡単で、グラフやマップ表示で瞬時に状況を把握できます。

製品概要無料版ダウンロード

※永年無料版の利用をご希望の方は、30日間フル機能ご利用いただける「評価版」をダウンロードしてください。 30日が過ぎると自動的に5モニターまで監視可能の永年無料版となります。


フィードバックフォーム

当サイトで検証してほしいこと、記事にしてほしい題材などありましたら、以下のフィードバックフォームよりお気軽にお知らせください。