SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

直近開催のイベントはこちら!

EnterpriseZine Day 2022

2022年6月28日(火)13:10

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けの講座「EnterpriseZine Academy」や、すべてのITパーソンに向けた「新エバンジェリスト養成講座」などの講座を企画しています。EnterpriseZine編集部ならではの切り口・企画・講師セレクトで、明日を担うIT人材の育成をミッションに展開しております。

お申し込み受付中!

性能劣化なんか起こさない!安全アップグレード教室

性能要件の厳しいシステムでお勧めする、オラクル製品を利用した性能試験

第4回

前回は、アップグレードを行う時に、実施する必要がある試験と、正しい性能試験を行うために必要となる事前準備についてご紹介しました。今回は、性能要件の厳しいシステムでは実施することをお勧めする、アップグレード前後の実行計画を比較する性能試験と、オラクル製品を利用した性能試験についてお伝えします。

アップグレード前後の実行計画を比較する性能試験

 アップグレードを行うと、多くのSQLの性能は向上しますが、稀に性能が劣化するSQLも存在します。そのため、性能要件がとても厳しいシステムでは、アップグレード前後の実行計画を比較する性能試験を行い、性能問題の発生を可能な限り未然に防止することをお勧めします。

 そこで、作業コストはかかりますが、アップグレード前後の実行計画を手動で比較する方法をお伝えします。

 なお、次の章で紹介する、SQL Performance Analyzer (SPA)というオラクルのオプション機能を使用することで、少ないコストで簡単にSQL単位の性能比較を行うことが出来ます。

 ① 確認対象のSQL文の抽出

 SQL台帳などで、確認対象のSQLをまとめていない場合は、現行環境にSQLトレースを仕掛け、実行されたSQLをロギングすることでSQL文を抽出してください。

 ただし、SQLトレースを仕掛けると、抜け漏れ無く情報を取得することが可能ですが、データベースに負荷がかかります。そのため、データベースレベルではなく、対象処理が流れるセッションに対してのみ設定することを筆者はお勧めします。

 ② 現行バージョンのテスト環境の準備

 現行環境のデータを、現行バージョンのテスト環境へ移行します。データ量の変動が激しいシステムの場合は、データ量が最も多くなるタイミングのデータを移行してください。

 また、現行環境と同じ実行計画を再現するために、現行バージョンのテスト環境には、現行環境と同じ初期化パラメータを設定し、統計情報も現行環境で使用しているものを移行してください。

 ③ 新環境の準備

 現行バージョンのテスト環境へ移行したデータと同じものを、新環境へ移行してください。

 自動統計収集を行う場合は、データを移行した後に、統計情報を収集してください。ただし、統計情報が収集されるタイミングによって、実行計画が変動する可能性があるため、試験の時と同じ実行計画が本番で使用されない場合もあります。そのため、実行計画を変動させたくない場合は、統計情報を固定化することもご検討ください。

 ④ 実行計画の比較

 現行バージョンのテスト環境と新環境でEXPLAIN PLANを使用して、実行計画を取得してください。

 EXPLAIN PLANは、実際にSQLを実行せずに、オプティマイザが算出した実行計画を取得するため、データ量が多い環境でも時間をかけずに、簡単に実行計画を確認することが出来ます。

 ただし、EXPLAIN PLANは、静的な情報のみで実行計画を算出するため、バインド変数の値を考慮しません。バインド変数の値を考慮して実行計画を立てる機能「バインドピーク」を無効化している場合は問題ありませんが、バインドピークを有効化している場合は、EXPLAIN PLANで確認した時と、バインド変数の値が考慮されるSQL実行時とで、実行計画が異なる場合があります。

 そのため、バインドピークを有効化している場合は、バインド変数の値も準備し、実際にSQLを実行して実行計画を出力するAUTOTRACEを使用してください。

 ⑤ 実行性能の比較

 実行計画が異なる場合は、性能が改善される変更なのか、性能が劣化する変更なのかを確認する必要があります。現行バージョンのテスト環境と新環境で実際にSQLを実行し、性能を確認してください。

 一般的に、実行時間が短くなっていれば、性能が改善していると言えますが、データのキャッシュの有無や、測定状況の違いにより性能誤差が発生する場合があるので、アクセスブロック数も確認することをお勧めします。

 アクセスブロック数とは、SQL文の処理中にアクセスが必要だった、Oracleデータ・ブロック数を意味し、処理効率に直結する指数です。

 そのため、実行時間(ELAPSED_TIME)と、アクセスブロック数(logical reads)を比較し、両方の項目の値が削減されている場合は、性能が改善されていると判断することをお勧めします。

 ⑥ SQLチューニング

 実行計画が変動して、性能が劣化したSQLをチューニングしてください。

 従来通り、ヒント句をつけることでチューニングする方法もありますが、SQL Plan Management (SPM)を使用する、新しいチューニング方法もご検討ください。

 SPMを使用すると、現行バージョンで使用していた実行計画を、SQL文を変更することなく、新環境でも再現することが可能になります。

 なお、SPMを効果的に使用する方法は、次回紹介します。

 

 このように、アップグレード前後の実行計画を比較する性能試験を実施すると、性能問題が発生する可能性があるSQLを事前に見つけることが出来ますが、これらの作業をすべて手動で実施すると、膨大な時間がかかってしまうため、現実的ではありません。

 そのため、取得したSQLトレースからSQL文を抽出する作業や、実行計画の変動を確認する作業は、手動で実施するのではなく、効率的に実施するツールを作り込んでから実施することをお勧めします。

次のページ
オラクル製品を利用して、アップグレード前後の実行計画を比較する性能試験

この記事は参考になりましたか?

  • Facebook
  • Twitter
  • Pocket
  • note
性能劣化なんか起こさない!安全アップグレード教室連載記事一覧

もっと読む

この記事の著者

大村奈緒(オオムラナオ)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

EnterpriseZine(エンタープライズジン)
https://enterprisezine.jp/article/detail/4441 2013/01/10 00:00

Job Board

PR

おすすめ

アクセスランキング

アクセスランキング

イベント

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

2022年6月28日(火)13:10

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング