
Oracle SQLチューニング Season2(第11回)第2章 SQLチューニング対象選定方法(8/8)
SQLチューニング対象選定方法 の第11回目は(Case別)SQLチューニング対象選定方法の5回目 です。
「Case5.ASHを活用した性能改善対象選定」について解説していきます。
それでは早速スタートしましょう!!
2.3.5 Case5.ASHを活用した性能改善対象選定
■ ターゲット抽出スクリプト
V$ACTIVE_SESSION_HISTORY (以下ASH)ビュー は Active Sessionのデータを秒単位でメモリ内に保存しています。
ASHビュー は最も最近発生したWait Event情報、各Active Sessionの活動情報、特定の区間で同じSQLがどれだけ実行されたかなどの情報を提供します。
これを活用することができれば、最近の時点で発生した性能問題に対する正確な原因分析が可能です。
もし希望している過去時点のデータが存在しない場合には、 DBA_HIST_ACTIVE_SESSION_HISTORYビュー に定期的に保存されているものを照会すれば良いのです。
ASHビューで照会することができるデータは[ チューニング対象選択のための情報及び活用ツール ]を参照してください。
ASHビューを活用した色んな方法がありますが、簡単な活用スクリプトをいくつか紹介します。
● 最近最も多く実行されたSQLと実行シェア(実行回数)
活用例
DB管理者が特定のDBサーバーに発生した性能問題をすぐに検出することができず、時間が経過してから検出したとします。
このケースで正確な原因分析をするためには、ASHビューを照会するスクリプトで該当時間帯の性能情報を簡単に把握することができます。
下記の[ 表2-7 ]の結果は、特定の状況を想定したスクリプトの実行結果です。
該当時間帯のActive Sessionの活動情報を見ると、同じSQLの実行とそのセッションで Latch: Cache Buffer Chains の待機イベントを待機する現象が一番最初に目立ちます。
同じ時間帯にASHを活用してCPU使用率Top 3 SQLと同じ時間帯に発生した待ち時間が多く発生したTop 3 Wait Eventのスクリプトを実行した結果をグラフで表示すると下記のようになります。
[ 表2-7 ]と[ 図2-8 ]を見ると、特定のSQLがLatch: Cache Buffers Chainsの待機が過度に発生し、CPU使用率がその時点で急増したものと分析することができます。
今までSQLチューニング対象を選定する方法について説明しました。
もう一度強調しますが、性能問題を扱う上で、その原因を引き起こした対象を探す作業の存在感はかなり大きいです。
性能問題はいつ、どのように発生するか誰も予測することができず、どんなに鋭敏で徹底的に管理していたとしても、この問題から自由であると言える人はいないでしょう。
しかし、性能改善対象選択の重要性と活用するツール、そして代表的に使用できる5つのケースに対するスクリプトや活用事例などを理解すれば、同じ性能問題が頻繁に発生する様な最悪の状況は十分に回避することができるのです。
Databaseが担当する業務や性格別に発生する可能性がある性能問題は、本テーマで紹介した内容のカテゴリーよりもっと多様な形で現れることがあります。
しかし、分析ツールが持つデータの性質をよく理解していれば、各パフォーマンス問題に適した対象を抽出することができるので、正しい解決方法を見つける近道となるものと私たちは確信しています。
次回ブログテーマ
第3章 SQL実行情報の分析及び活用方法(1回目)