MOREクエリストアでパフォーマンス監視2017.04.28お久しぶりです、今回は新里です。「クエリストアでのパフォーマンス監視」についてお話しさせて頂きたく思います。興味のある方はどうぞ宜しくお願いします。使用可能となりました。2015年の11月から使用可能だったんですね。管理してくれるサービスです。効率的に開発を行うことが出来ます。このクエリストアを活用して必要な情報を取得し、パフォーマンスに関する問題点をいち早く確認する事が出来ます。サイトからパフォーマンスを確認する機能が存在します。ブラウザからアクセス出来、Azure上のサービス環境構築を管理する事が出来ます。追加、削除が容易に出来、パフォーマンス監視もやってくれます。概要ページへ遷移すれば、CPU使用率、DTU割合、データIOの割合、データベースサイズの割合などを監視することが出来ます。グラフを編集する事で監視したい項目をカスタマイズする事も可能です。アラートメールの設定も行えるので、急激な負荷に対する警戒も行えます。効果の見込めるチューニング内容を提示してくれます。インデックスの付け方についても効果が見込めるものを提示してくれたりします。InsightCPU消費量上位のものや実行時間の長いクエリの情報を集計してくれます。無くてもクエリストアを利用することが出来ます。なっていたり、設定によっては思った様に機能しない場合があるので設定値を確認してみましょう。なっているならば有効設定に変更しましょう。データベースのプロパティから容易に設定を変更できます。クエリで設定値を更新することも可能です。クエリストアに関する設定値を確認したい場合は以下のクエリで取得できます。クエリストアの領域を拡張する事も出来ます。クエリの量によっては足りない場合もあり得るので確認しておきましょう。その他にも設定可能な項目があり、確認したい環境に適した設定に変更できます。この様にローカル環境でクエリストアを有効にしておけば開発中のテストの結果から、実装内容の評価を行う事が出来ます。実装内容が小規模である場合や実行頻度が低いものであったりすると事前に問題が検知できず、後々になって発覚する場合があるので、ローカル環境で自身の対応内容のみを確認する事が出来ます。内容やタイミングによってはそこまで細かく見ておく必要が無い場合があったり、そもそも無駄だったりするので、そこは内容と時間と優先度に相談するとしましょう。Studioクエリストアを有効にして、クエリをシナリオにそって1日ほど実行すればクエリストアに情報が蓄積されます。Store」階層が生成されます。Queries特定の期間中にパフォーマンスの低下したクエリを集計してくれます。インデックスの変更やこれまで実行されていなかったもの等、以前よりパフォーマンスが低下したもの等の特定に役立ちます。値大きい日をグラフで示してくれます。問題のある日を容易に特定することが出来ます。多いクエリデータを降順で集計してくれます。クエリプランが変更されると、前回のプランと比較することも出来ます。プランが変更されたのかや、インデックスが有効に働いているかどうかを比較して確認することが出来ます。あ、インデックスの使われ方変わってる。指定して特定のクエリを指定してクエリ実行時間の遷移を確認出来ます。問題のあるクエリを特定した後により詳細を追いかけるのに役立ちます。チームで開発している場合、メンバーが実装した機能が集められる統合環境が存在すると思います。その環境のクエリストアの内容を確認すれば、統合された環境でどういった結果になるかが確認出来、ローカル環境では分からなかった他の機能との影響が分かります。異常な実行時間を検知した場合にアラートを出すなんてものがあると良いかもしれませんね。提供する分析ツールの事です。クエリストアに対して欲しいデータを取得する様なクエリを書いてしまえば、Viewをカスタマイズすることで視覚化する事が可能です。確認することが出来ます。ここから試しに以下の様なクエリで、データを取得してみましょう。PowerBIを起動して、「データを取得」を選択します。ステートメント」項目に記述します。正常に動作すれば、クエリ1という項目が追加されるので、グラフに反映させたい項目を設定してViewerに表示します。実行回数TOP10の実行時間円グラフの図これで最も呼び出されているクエリの中で、実行時間が一番大きいクエリがわかりますね。(需要があるかどうかはおいて置いて。)この様に、確認したい項目を自身でカスタマイズする事が出来ます。今回のものは簡単な実行例になりますが、可視化することで何が問題であるかがすぐわかる様になります。リリース前の段階であれば負荷試験を実施すると思います。事前に必要となる項目を洗い出し可視化する事でより鮮明な問題点を確認できます。ユーザの動きを想定したシナリオ用意し、このシナリオの内容が本来のユーザの動きと一致していればいるほど、リリース前の確認が正確なものとなり、リリース後の想定外の問題を減らす事が出来るでしょう。如何でしたでしょうか。問題となっている箇所はもちろん、確認したい粒度で監視する事も出来るので、開発中や運営中でも事前に問題を検知できますね。それでは今回は、この辺で失礼致します。ありがとうございました。採用情報クラウドクリエイティブスタジオでは絶賛エンジニア募集中です。