検索
連載

データベースのバージョンアップはなぜ「大変」なのか──「SQLテスト」の3大課題とは【12c対応】とにかく苦労しない「RAT」簡単攻略テクニック(1)(1/2 ページ)

データベースのバージョンアップに立ちふさがる「SQLテスト」の課題。この工数がかかる工程を自動化し、手間やコストの大きな軽減も期待できる方法があります。本連載では、Oracle Databaseのオプション機能である「Oracle Real Application Testing(RAT)」と、その一機能である「SQL Performance Analyzer」の攻略方法を紹介していきます。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

 データベースソフトウェアのバージョンアップには「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)。

photo 図1 データベースのバージョンアップで発生するSQLテストの課題

 1つ目は「コスト」です。SQLテストは地道な手作業が主体となるので、膨大な量のSQL全てを確認するのに多くの人員と時間を要してしまいます。

 2つ目は「準備」です。SQLテストは、新バージョンのテスト環境で行います。当然、そのテスト環境には稼働させるアプリケーションの準備も必要です。アプリケーションの準備には、別途アプリケーションチームとの連携も必要でしょう。同じく、多くの手間や時間がかかります。

 3つ目は「正確性」です。テスト環境でなんとかSQLテストをやり終えたとしても、SQLの網羅率やテストシナリオの再現性が低い課題が残ります。本番リリース後に性能劣化やエラーを引き起こしてしまうケースも多くあります。

 この3つの課題を解決するOracle Databaseのオプション機能が「RAT」です。

Copyright © ITmedia, Inc. All Rights Reserved.

       | 次のページへ
ページトップに戻る