Technical Articles
SQL Statement Collection for SAP HANAのススメ
SQL Statement Collection for SAP HANAとは?
SAP Note 1969700 – SQL Statement Collection for SAP HANA というSAP Noteをご存知でしょうか?このSAPノートではSAP HANAの分析をするためのSQL文のコレクションが添付ファイルで提供されています。その数、2019年9月時点では、約450個!
そもそも、HANAのシステム情報は、様々なSAPのシステムビュー(Mビュー)、統計テーブル(_SYS_STATISTICSスキーマ)に格納されていますが、SQL Referenceを元にこれらのビューを自分で読み解いてご利用のHANAの分析するには、高度な職人技が求められます。
そこでSAPではみなさんのHANAのシステム情報を読みやすい形で整形し、パフォーマンスや設定の確認も行うためにこのSQL文コレクションが提供されています。
SAPが提供しているサポートサービスや”SAP HANA Troubleshooting and Performance Analysis Guide”の中でもこのSQL文を多く利用しています。
ちなみに、このSQL文コレクション、実はOracle用にもSAP Note 1438410 – SQL script collection for Oracleを提供しているので、SAP on Oracleの環境のご利用いただいているお客様はこちらもご活用ください。
どんなSQL文があるの??
SQL文コレクションで様々なタイプのSQL文が提供されています。ここでは、一例として私がよく使うクエリをいくつかピックアップしてみました。中にはマニアックすぎて、私もこんなのいつ使うんだろう?と思うようなSQL文もあります。HANAの道は奥深いです。
システム構成確認のためのSQL文
システム構成の確認:HANA_Configuration_Overview
サーバ構成の確認:HANA_Configuration_Infrastructure
パラメータの確認:HANA_Configuration_Parameters
システムの状態を簡易チェックするためのSQL文
簡易ヘルスチェック:HANA_Configuration_MiniChecks
ABAP環境のヘルスチェック:HANA_ABAP_MiniChecks
セキュリティの簡易チェック:HANA_Security_MiniChecks
システムの詳細分析をするためのSQL文
CPUとメモリの使用履歴:HANA_Resources_CPUAndMemory_History
現在のシステム負荷状況:HANA_Global_CurrentStateReport
メモリの使用状況:HANA_Memory_Overview、HANA_Memory_TopConsumers
スレッドの使用履歴:HANA_Threads_ThreadSamples_*
しかし、ここまで提供されるSQL文が多いとどれを使っていいか困るかと思います。このSQL文のファイルの名前は、HANA_<カテゴリ>_<詳細>という形で提供されているので、何となくファイル名を見るだけでどういうSQL文なのか知ることができます。
「HANA_Memory_TopConsumers」の場合、カテゴリ:Memoryで、詳細:TopConsumersなので、メモリを多く使っているものが何か?ということを知るためのSQL文ということになります。また、SQL文の冒頭にコメントとして、SQL文の説明(Description)や、出力結果サンプル(Example Output)、項目の説明(Output Parameters)があるのでそちらでも確認することができます。
SQL文のコメントにある説明内容
私は、メモリについて詳細分析したいな、、と思った際には、まずはExplorerでMemoryで絞り込んだ後に、詳細のタイトルを確認しながら各ファイルの出力結果サンプルを見て、自分が欲しい情報かどうか確認して、分析に使うクエリを決めています。450個もクエリがあるので、当然ですが、全てを把握するなんて無理です。
どうやって実行するの??
HANAに接続してSQL文が実行できれば、どんなクライアントでもOKです。
- HANA Studio
- DBA Cockpit(SAP t-code: ST04)
- HANA Cockpit(DB Explorer)
- hdbsql
ただし、クライアントによってデフォルトの出力行数が決められているのでご注意ください。HANA Studioは1000行、DBA Cockpitは250行です。デフォルトの出力行数では足りないことは多々あるので、必要に応じて、増やしてください。
HANA Studioの場合:Preferences -> SAP HANA -> Runtime -> Result “Maximum Number of Rows Displayed in Result”
DBA Cockpitの場合:Rows
残念ながら、HANA Cockpitではクエリの文字数の上限128,000があるため、Configuration_Minicheckなどの一部クエリが実行できません(SAP Note 2621976)
また、多くのSQL文には分析期間や条件を指定するための入力パラメータ(INPUT PARAMETER)が提供されています。これらはSQL文内の/* Modification section */ で値を設定することができます。
SQL文の中にあるパラメータ設定箇所 Modification section
分析対象の期間、ホスト、スキーマの設定や、出力結果の集約単位(時間やホスト)、オーダーなどが設定できます。設定方法は/*Modification section*/のコメント、[INPUT PARAMETER]、およびNote 1969700で確認できます。
よく使うパラメータの例
BEGIN TIME/END_TIME:
分析対象時間の指定。’C-D1’ (=現在時刻からマイナス1日)、’B+H4’(BEGIN TIMEからプラス4時間)といった形でといった指定も可能。
DATA_SOURCE:
CURRENTを指定した場合、メモリ上にあるMビューをソースに現在もしくは直近の情報を分析。
HISTORYを指定した場合、統計テーブルをソースに過去の情報を分析。
AGGREGATE_BY:
ホスト、時間などの分析の集約対象を指定。集約したくない場合はNONEを指定。
TIME_AGGREGATE_BY:
時間で集約する場合の、単位を指定。時(HOUR)、週(YYYY/WW)、指定秒(TS<seconds>)
注意事項
SQLコレクションの中にはリリース依存のものがあります。
SQL: “HANA_Threads_CurrentThreads”: 全てのリリースで有効
SQL: “HANA_Configuration_MiniChecks_1.00.102.01+”: HANA 1.0 Rev 102.1以上で有効
複数バージョンがある場合には、対象のリリースに最も近いものをご利用ください。
現在、2.00.023を使用しており、SQL文が2.00.000+, 2.00.010+ and 2.00.030+ とある場合、 2.00.010+ を使うのが適切です。
また、クエリを実行してエラーが発生した場合には、Note 1969700に対応方法について記載があるのでご確認ください
最後に
このSQL文コレクションはSAP HANAを分析するにあたって非常にパワフルなツールです。また、よりHANAを極めたいと思っている人にとっては、このSQL文で参照しているビュー(INVOLVED TABLES)を確認することによって、SQL文では使用していない他の項目なども分析できるようになります。
それでは、SQL文コレクションを活用して良いHANAライフを。