概要

前回は、Vertica Management Console(以降、MCと記載します)の活用方法の例として、サーバリソースのモニタリング機能をご紹介しました。
今回は、クエリ解析のモニタリング機能をご紹介します。


クエリ解析のモニタリング機能

クエリ処理の解析を行うにあたって、VerticaにはExplainとPeofileという2つの機能があります。
これらの機能を使って、クエリ処理内で行われる各フェーズのアクセスパスやコストといった実行計画、
さらにはクラスタノード内の各ノードがどれくらいリソースを使用したかを確認する事ができます。

ExplainとProfile

Explainでは、オプティマイザのクエリプランの実行計画が得られます。
Profileでは、クエリパフォーマンス分析のために使えるリソース情報や所要時間といった様々な情報が得られます。
これらはいずれも、CUIベースのvsqlコンソール内でのコマンドで確認する事もできますが、
MCを使う事でGUIベースのグラフィカルな機能によって視覚的に見やすく確認する事ができます。
以降では、MCを使ったクエリ解析方法をご紹介します。

MCを使ったExplainとProfileの確認

ここでは、MCを使ったExplainとProfileの確認方法を紹介します。
どちらも途中までは同じ操作になりますので、共通部分をはじめに記載します。

ダッシュボードの最下部にある「Activity」をクリックします。
HP Vertica Management Console - Overview_2015-11-16_13-49-47

表示された画面には、現在実行中のクエリがリスト表示されています。
Vertica Management Console - Database Performance Monitor_2015-11-16_13-49-57

このリストは表示するカテゴリをタブで切り替える事ができます。タブには4つの「Running Queries(現在実行中のクエリ)」、「Queued Queries(キューに溜まったクエリ)」、「Completed Queries(実行完了したクエリ)」、「Failed Queries(失敗したクエリ)」があります。表示したいタブをクリックする事で、各カテゴリのクエリをリストする事ができます。
以下の例では、「Running Queries(現在実行中のクエリ)」に12個のクエリがある事が読み取れます。
Vertica Management Console - Database Performance Monitor_2015-11-16_13-50-32

スクロールバーを動かして、表示されたリストの右端を表示させると「Actions」という列が見えます。
各クエリごとに表示されている「more」をクリックすると、「Explain」と「Profile」のリンクが表示されます。
Vertica Management Console - Database Performance Monitor_2015-11-16_13-50-26

ここからは、ExplainとProfileの確認方法を分けてご紹介します。

MCを使ったExplainの確認

「Explain」をクリックすると、上段にはクエリのSQL文、下段にはPath Informationが表示されます。
Vertica Management Console - Explain Plan_2015-11-16_13-51-04

このように、リストされたクエリ処理では実際にはどのようなSQL文が実行されているのか、
またクエリ処理内の各フェーズのアクセスパスやコストといった実行計画がどのようになっているかをPath Informationで確認する事ができます。

MCを使ったProfileの確認

「Profile」をクリックすると、上段左側にはクエリのSQL文、上段右側にはクエリ処理における各フェーズごとの所要時間の割合を示した円グラフ、下段にPath Informationが表示されます。
下段には4種類の表示形式(Path Infomation、Drilldown、Tree、Analysis)で表示を切り替える事ができます。
Vertica Management Console - Explain Plan_2015-11-16_13-54-09

「Path View」表示
Path Informationの表示では、先程のExplainで表示された内容と同じ実行計画が表示されますが、右側には長方形のバロメーターが表示されます。これらは「Disk」と「Memory」ではディスクとメモリのリソース使用量、「Sent」と「Recieved」ではクラスタ間で発生したデータ転送量(送受信量)、そして「Time」ではそのステップの所要時間を表わすバロメーターが表示されています。
※この「time」は、各ステップの所要時間を示していますが、各ステップの処理はパラレルで実行されているため単純な合計値がクエリの所要時間ではない点にご注意ください。

「Drilldown」表示
Drilldownの表示では、各処理の数量をノードごとに表示します。
何の数量を表示するかをプルダウンメニューで切り替える事ができます。
Vertica Management Console - Explain Plan_2015-11-16_13-51-32

プルダウンメニューでは、以下の8種類を選択する事ができます。
プルダウンメニュー

さらに青いグラフの任意の場所をクリックする事で、クラスタ内のノード単位のバロメーター(紫色)を表示させる事ができます。
以下の例では、プルダウンメニューで「bytes read from disk」を選択しています。
これによって、そのクエリ処理の中でディスクから読み込んだ数量を表示しています。また、各ノードがどれだけの数量をディスクから読み込んだかを示すバロメーター(紫色)も表示しています。
※今回のVerticaサーバはシングル構成のため1台分しか表示されていませんが、クラスタ内の複数ノードがどれくらいの分散処理をしたかを確認したいケースで使えます。
Vertica Management Console - Explain Plan_2015-11-16_16-25-23


「Tree」表示
Treeの表示では、実行計画の詳細をツリー表示する事ができます。
各ブロックの状態は、その処理のステータスを表示します。
(実行中なのか、完了したのか、またはこれから開始するのか)
また、各ブロックにはメトリック情報が表示されます。
Vertica Management Console - Explain Plan_2015-11-17_13-44-46

「Analysis」表示
Analysisの表示では、実行計画を分析モードで表示する事ができます。
これを使用する事で、任意のリソースの異常値(外れ値)を識別することができます。
見積りされた行数と実際に処理された行数を比較することや、各フェーズの実行時間やメモリ使用量を確認することができます。
Vertica Management Console - Explain Plan_2015-11-16_13-52-10


このように、クエリ処理の詳細情報を視覚的に確認できるので、クエリ解析やパフォーマンス問題を行う際に役立ちます。

以上。