開発段階でのデータベース・テストとチューニングの重要性

アプリケーション開発の最終段階で性能問題が発生し、調べてみると「あるSQLが原因だった」というケースはよくあります。ひどい場合にはシステムのカットオーバー後に発覚することも・・・。

実際に、約65%のシステムで、開発の終了後に何らかの手直しが発生しているとも言われています。

開発の段階できちんとテストして、チューニングができていればよかったのに・・・。

clip_image002

もちろん多くのシステム開発で「テスト期間」はとってありますが、テストすべき項目は非常に多く、効率的にテストをしなければとても間に合わないでしょう。

では、効率的なテストってどうすればいいの・・・?

ここでは、データベースのテストを効率よく行うための3つのポイントと、それを手助けするOracle Databaseの機能をご紹介します。

 

ポイント1 「リアル」なデータを用意する!

SQLのパフォーマンスは、SQLの構文だけでなく、データの種類や偏り、選択率によっても変わります。

例えば複数の表を結合する場合、選択率の低い(データを絞り込める)ところから処理をしたほうが良いでしょう。また、列同士に関係があれば(関東でしか扱っていない製品がある等)それを考慮した実行計画がたてられたほうが検索効率が良くなります。そのため、テストに使うデータも、データの量さえ同じであればよいというわけではなく、データの種類や偏りまでを再現する必要があるのです。表ごとに特徴を考えてテストデータを作るのは容易ではありません。

こんな時に便利なのが、Oracle Databaseの「Data Masking」機能です。この機能を使うと、実際のシステムで使っているデータを様々なルールに従って(もしくはランダムに)置換し、意味のないデータに置き換えることができます。

例えば、「オラクル太郎」さんと「キャンディ花子」さんといった顧客名のデータを組み替えて「オラクル花子」「キャンディ太郎」としたり、電話番号やクレジットカード番号の数字をシャッフルしてテストデータとして使用すれば、限りなくリアルなデータを使ったテストができますし、万が一データが漏えいしたとしても実際の顧客とは結びつかないため、問題はありません。

このように、リアルなデータを簡単に作り出すことで、安全で正確なテストができるようになるでしょう。

clip_image002[5]

【セミナー資料】データベースから安全なテストデータを作成するには

ポイント2 性能問題のあるSQLを効率的に洗い出す!

たくさんあるSQL文をひとつずつテストするのは大変です。カンに頼って、複雑そうなものだけテストする?時間のかかるものだけテストする?ひょっとしたら、複数の同時処理が行われたときにだけ、問題が発生するSQLもあるかもしれません。たくさんのコードの中から、問題のあるSQLをどのように見つければ良いのでしょうか?

こんな時に便利なのが、Oracle Databaseの「パフォーマンス監視」画面です。Oracle Databaseのパフォーマンス監視画面を使うと、データベースにかかっている負荷をリアルタイムに確認することができます。さらに、そのときに実行されていたSQL文も負荷の高い順に表示されるため、簡単に問題のあるSQL文を特定することができます。

また、多数のユーザ処理をシュミレーションしたい場合には、負荷ツールを使うとよいでしょう。オラクルのテストツールである「Application Testing Suite」を使用すると、簡単にデータベースに負荷をかけることができます。

clip_image004

Oracle Real Application Testing - 概要(とは), 資料, マニュアル

ポイント3 まずは画一的にチューニング!

問題のあるSQLが特定できたら、それを改善する必要があります。しかし、最適なチューニングを行うには、深い知識をもとに、データベース内の様々な情報を駆使する必要があり、一朝一夕にマスターできるものではありません。また、個人のスキルに依存したチューニングでは「ムラ」が出てくるかもしれませんし、どんなにチューニングのスキルがある人であっても、ある程度の時間はかかるでしょう。

こんなときに便利なのが、「チューニング・アドバイザ機能」です。チューニングをしたいSQL文をまとめて「実行」ボタンを押すだけで、Oracle Databaseが自身の内部情報を使って、SQLの診断と、改善案を提示してくれます。診断結果には「索引を付けたほうが良い」「SQLの構文を改善したほうが良い」「実行計画を改善したほうが良い」等のアドバイスが提示されます。もちろん、そのアドバイスを受け入れるのか、または別のチューニング方法を検討するのかは人間が決めることですが、まずはOracle Databaseに最低限必要な項目をチェックさせ、アドバイスをもらうとよいでしょう。

また、チューニング・アドバイス機能を使うと、内部的にSQLの実行計画を改善する「SQLプロファイル」を作ることができます。「SQLプロファイル」は、SQL文自体を変更することなく適用できるため、アプリケーションの変更ができない場合や、パッケージ・アプリケーションにも有効です。

clip_image006

このように、Oracle Databaseの機能を使うことによって、開発段階でのテストをより正確に、効率的に行うことができるようになります。次はぜひあなたのシステムで試してみてください!

【セミナー資料】もうアプリ改修は必要ない!これからのSQLチューニング

---------------------------------------------------------------

これらの機能を、実際に試してみませんか?

Oracle Directでは、これらの機能をオンラインで体験していただける

「製品無償評価サービス」を実施しています。

詳細はこちらをご覧ください!

---------------------------------------------------------------

Comments:

Post a Comment:
Comments are closed for this entry.
About

Oracleエンジニアの方がスキルアップしていただくために、厳選した情報をお届けしています

Search

Archives
« 3月 2015
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
    
       
Today
Bookmarks
関連サイト
ランキング:カテゴリ
ランキング:技術資料
ランキング:技術コラム