技術ブログ
目次
渡部です。SQL Optimizer for Oracleとは、クエストソフトウェア社のToad for Oracleの上位エディションに含まれるSQLチューニングツールです。本エントリでは、SQL Optimizer for Oracleについて説明します。
SQL Optimizer for Oracleは、Oracle Database用のSQLチューニングツールです。
主な機能は以下の2つです。
ツールでSQLチューニングをできる点が大きなアピールポイントです。
問題SQL(高負荷のSQLや長時間実行のSQL)を特定できるツールは多数あります。しかし、問題となったSQLをチューニングできるツールはほとんどありません(渡部が知る限り、後述するOracle Tuning Pack以外ありません)。
すなわち、多くの場合において、Statspack/AWRレポートやMaxGaugeなどの性能分析ツールを用いて 問題となるSQLを特定することまではできるのですが、その後の問題SQLをチューニングする作業は人力で行う必要があったということです。
SQLチューニングをできるハイスキルなエンジニアはそうそういるものではありません。また、ハイスキルなエンジニアであったとしても、チューニングには多くの時間が必要です。さらに言えば、ハイスキルなエンジニアが多くの時間を割いたからと言って、必ずチューニングが可能な訳ではありません。
もちろん、SQL Optimizer for Oracleを用いたとしても、もはやチューニングの余地がなく、 それ以上のチューニングができないという結論に至るケースはあります。 しかし、エンジニアが手動でSQLチューニングする場合に比べて、その結論に至るまでに費やす時間を大幅に削減できます。もちろん、ハイスキルなエンジニアを探し、雇う必要もありません。
製品の位置づけとしては、Oracle Database Enterprise Edition限定の有償オプションである、 Oracle Tuning Packに含まれるSQLチューニング・アドバイザ、SQLアクセス・アドバイザに近い機能を持ちます。
ただし、以下の点が異なります。
Oracle Database Standard Edition 2では、Oracle Tuning Packは使用できませんから、 その代替品としてSQL Optimizer for Oracleを使用できます。
また、Oracle Database Enterprise Editionの場合でも、Oracle Tuning Packのコストを 受け入れられない場合は、代替品としてSQL Optimizer for Oracleを使用できます。
SQL Optimizer for Oracleは、Quest Software社のToad for Oracleの上位エディションに含まれます。
Toad for Oracleはシート単位(≒ユーザー単位)のライセンス体系を取っており、 1人の使用者が複数のOracleデータベースを管理するような場合にとても購入しやすいです。
使用者が1人であれば、どれだけの数のOracleデータベースを管理していたとしても、ライセンスは1シート分でOKです。
また、ライセンスは特定の使用者個人に割り当てられているわけではないので、 人事異動などで担当者が変更された場合でも、総人数が変わらない限り、ライセンスの追加購入は不要です。
個人的には、ユーザーの情シス部門などの、限られた人数で多数のOracleデータベースを管理するような状況や、複数プロジェクトのデータベース技術支援を行うようなSIerのデータベース専任チームにとてもマッチするライセンス体系だと考えています。
Toad for Oracleはいわゆる普通のWindowsアプリケーションです。インストーラを実行すればインストールが完了します。稼働用の専用サーバ装置は不要です。
ライセンス体系の柔軟さと相まって、導入の敷居はかなり低いと思っています。
SQL Optimizer for Oracleは、 SQL文の書き換えやSQLヒントの追加を行い、最適なパフォーマンスを得られる実行計画を持つSQLを機械的に探索します。
もし、SQLを書き換えて最適なパフォーマンスが得られた場合は、書き換えたSQLが提示されます。よって、そのSQLを使うようにアプリケーションを変更する必要があります。
もし、SQLヒントを追加して最適なパフォーマンスが得られた場合は、SQLヒントを追加したときの実行計画でSQLが実行されるように、実行計画を制御する情報をSQL管理ベースラインまたはストアドアウトラインに登録します。この場合は、アプリケーションを変更する必要はありません。
いずれも、SQLが想定された実行計画で実行されるように誘導するOracle Databaseの機能です。 SQLにヒントを埋め込むことなく実行計画を変更できるため、アプリケーションが発行するSQLを変更できない状況で非常に役立ちます。
ストアドアウトラインは、Oracle 9iから存在する機能です。Oracle Database 11g から非推奨扱いになってはいますが、使用は可能です。
SQL管理ベースラインは、ストアドアウトラインの後継となる機能で、Oracle Database 11gで導入されました。Oracle Database 12.2まではEnteprise Edition限定の機能でしたが、18cからはStandard Editionでも使用可能になっています。
AWRや共有プール、ソースコード内にある一連のSQLを元に、作成すべき索引を推奨します。 Oracle Tuning Packに含まれるSQLアクセス・アドバイザに似た機能です。
OracleでSQLチューニングができるハイスキルなエンジニアを探すのはなかなか大変なことですが、 SQL ServerでSQLチューニングができるハイスキルなエンジニアを探すのはそれに輪をかけて大変です。
その意味で、SQL Optimizer for OracleよりもSQL Optimizer for SQL Serverの方が、受け入れられる現場は多いと考えています。
また、ここだけの話ですがオプティマイザの出来の問題か、SQL Optimizer for SQL Serverをご利用のお客様から「絶大な効果が得られた!」という声を聞くことが多いような・・・
Toad for Oracle(SQL Optimizer for Oracle), Toad for SQL Server(SQL Optimizer for SQL Server)を購入検討の際はコーソルまでぜひお声がけください!