データベースのバージョンアップはなぜ「大変」なのか──「SQLテスト」の3大課題とは:【12c対応】とにかく苦労しない「RAT」簡単攻略テクニック(1)(1/2 ページ)
データベースのバージョンアップに立ちふさがる「SQLテスト」の課題。この工数がかかる工程を自動化し、手間やコストの大きな軽減も期待できる方法があります。本連載では、Oracle Databaseのオプション機能である「Oracle Real Application Testing(RAT)」と、その一機能である「SQL Performance Analyzer」の攻略方法を紹介していきます。
データベースソフトウェアのバージョンアップには「SQLテスト」が必要不可欠です。しかし、長く運用してきたデータベースシステムとなれば、テストするSQLが少なくとも数千本単位になることが多く、テスト方法も手作業が主体なために、想像以上に多くの工数がかかります。
そんな手間と時間のかかるSQLテストを自動化し、大幅に工数を削減できる方法があります。本連載はOracle Databaseを運用しており、かつこの先のデジタルトランスフォーメーションやクラウド対応のために、Oracle Database 12c以降へのバージョンアップを考えている人に向け、Oracle Databaseのオプション機能である「Oracle Real Application Testing」(以下、RAT)と、その一機能である「SQL Performance Analyzer」の奥深さと攻略方法を紹介していきます。
データベースのバージョンアップは、なぜ「大変」なのか
データベースソフトウェアのバージョンアップを「大変」と感じているデータベース管理者は多いでしょう。バージョンアップによって、これまで問題なく動いていたアプリケーションの一部で性能劣化を起こしてしまうSQLや、構文エラーなどによって実行できなくなるSQLが存在するからです。
筆者が所属するアシストが請け負った一例として、あるお客さまが「Oracle Database 9i」から「Oracle Database 11g」へ移行した際のSQLテストは以下の結果でした。
- SQL性能は同等、あるいは向上した→約96%
- SQL性能が「下がった」→約1%
- エラーで「実行できなかった」→約3%
バージョンアップによってオプティマイザの機能が改善されることから、SQLの性能もバージョンアップ前より向上します。少なくとも同等のケースがほとんどです。
しかし、オプティマイザによるSQLの実行計画が変わる可能性があるということは、もし非効率な結合方法や結合順序が選択されてしまうと、逆に性能が落ちてしまうことになります。さらにSQLの構文チェックが厳密化されたり、SQL関数などの仕様が変更されたりすることで、実行エラーとなる場合もあります。
この例では、アプリケーションから実行されているSQLが全体で1万本あったならば、約100本で性能が低下し、構文や関数の仕様変更によって約300本が実行エラーで使えなくなることを示しています。3%といえど、かなりの数になるわけです。
“これまでの方法”の3大課題
性能劣化や実行エラーとなるSQLは全体の数%かもしれません。しかし、これをどうやって見つけ出すのでしょう。「手作業」で地道にSQLテストをしていくのです。
具体的には、新バージョンのテスト環境を準備し、アプリケーションを動かしてSQLを発行させ、1つ1つレスポンスが遅くないかどうかをチェックしていくのが一般的な方法です。遅くなったり、実行できなくなったりしたSQLについては、オプティマイザの実行計画を取得した上で、現環境との差異を確かめてその原因を特定し、SQLをチューニングします。
この“これまでのSQLテスト方法”には3つの大きな課題が存在します(図1)。
1つ目は「コスト」です。SQLテストは地道な手作業が主体となるので、膨大な量のSQL全てを確認するのに多くの人員と時間を要してしまいます。
2つ目は「準備」です。SQLテストは、新バージョンのテスト環境で行います。当然、そのテスト環境には稼働させるアプリケーションの準備も必要です。アプリケーションの準備には、別途アプリケーションチームとの連携も必要でしょう。同じく、多くの手間や時間がかかります。
3つ目は「正確性」です。テスト環境でなんとかSQLテストをやり終えたとしても、SQLの網羅率やテストシナリオの再現性が低い課題が残ります。本番リリース後に性能劣化やエラーを引き起こしてしまうケースも多くあります。
この3つの課題を解決するOracle Databaseのオプション機能が「RAT」です。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- オラクルが考えるDBインフラのクラウド化「DBaaS」とは? 実現方法と支援環境を聞く
「DBaaS(ディービーアース、Database as a Service)」実現に向けて、オラクルはどのような移行プロセスを考えているのだろうか。段階的移行の三つのステップとそれを支援する環境をどこまで用意しているのかを、米オラクルの担当者に取材した。 - アシスト、Oracle Database 12cとクラウドへの早期移行を支援する「12c R2×Oracle Cloudスタートアップキャンペーン」を実施
アシストがOracle Database 12cとOracle Cloudへの移行促進キャンペーンを実施。期間限定で環境構築や基礎機能のレクチャーなどをセットにした移行支援ソリューションを特価で提供する。実施は2017年4月30日まで。 - オラクル、「Oracle Database 12c R2」のOracle Cloud at Customer/オンプレミス向け提供を開始
データベース管理システムの最新版「Oracle Database 12c Release 2」で全ての提供形態が整った。先行提供していたパブリッククラウド向けに続き、新たにOracle Cloud at Customer向けとオンプレミス向け提供を開始した。 - オラクルが確約した「クラウド6箇条」と「Database 12c R2」の気になるトコロ
米オラクルのラリー・エリソンCTOが、同社の年次イベントで今後のクラウド事業の行方を確約する「Oracle Cloud、6つの設計目標」を掲げました。同時に発表された基幹製品「Oracle Database 12c」の次期バージョンのポイントと共に、そこにどんな狙いがあるかを振り返ります。