データベースのパフォーマンス問題の傾向とチューニング
基本だが重要なチューニング項目~メモリ・チューニング
先にお話ししたように、データベースのパフォーマンスが上がらない理由のひとつとして、メモリ設定が最適化されていないことが挙げられます。Oracle Databaseのメモリ・チューニングは非常に複雑という印象を持っている方もいらっしゃると思いますが、「Oracle Database 10g」や「Oracle Database 11g」ではOracle Databaseが自動チューニングやアドバイスを行ってくれる仕組みになっています。
図3-1は、Oracle Database各バージョンのメモリ関連のパラメータです。ご覧いただくと分かるように、「Oracle8i」で9つあったパラメータが、「Oracle Database 11g」ではOracle Database全体が利用するメモリサイズを指定するだけで、後はデータベース自身が負荷状況を見ながら自動的にチューニングしてくれるため、わずか1つになりました。
また、唯一指定するパラメータについても、これまでの負荷状況から最適な値をアドバイスしてくれる機能が備わっています(図3-2)。
このメモリ・アドバイザですが、次のような声も頂いています。「メモリ・アドバイザの出したメモリの設定を、そのまま既存のシステムに適用しても、パフォーマンスの改善に有効であり、あらためてその効果を実感した」
このように、メモリ・チューニングに限らず、Oracle Databaseはバージョンが上がる度に運用管理が容易になるように進化しています。
高いレベルの課題に対応していくには
Oracle Databaseでは、ここまでお話ししたような機能によって、ソフトウエアの力を活用してパフォーマンスの課題に対応していくことが可能です。ただ、どんなシステム特性・どんな規模のデータベースでも解決していくことができるかというと、難しいケースも出てきます。
そこで、Oracleでは、こうした課題・ニーズに合わせた製品群を用意しています。例えば、金融機関やWebシステム等の高いパフォーマンス・ニーズに対応するため、インメモリ・データベースである「Oracle TimesTen In-Memory Database」(http://www.oracle.com/lang/jp/database/timesten.html)やKey-Value型データストアである「Oracle Coherence」(http://www.oracle.co.jp/campaign/coherence/)を。また企業の分析ニーズに応えるために、データベース・アプライアンスである「Oracle Exadata」(http://www.oracle.com/lang/jp/database/exadata.html)を提供しています。
■今回のまとめ
今回のまとめとしては、データベースの性能を圧迫するボトルネック要因の第1位として、まずはディスクI/Oの問題を挙げることができます。この問題に対して、OracleではASM(Automatic Storage Management)と呼ぶ自動化ツールを用意しました。必要なときに必要なだけディスクを追加することができます。自動的にデータの分散配置も実施します。
メモリ・チューニングも重要ですが、Oracle Databaseにはチューニングを自動化する機能が備わっており、決して難しくはありません。設定しなければならないパラメータは、たったの1つです。Oracle Database全体で利用するメモリサイズを指定するだけで、メモリのチューニングが済みます。
それでも性能の確保が難しいケースには、用途に合わせた専用の製品群も用意しています。Oracle Databaseのキャッシュ用途にも利用可能なインメモリ型リレーショナル・データベース「Oracle TimesTen In-Memory Database」、Key-Value型データストア「Oracle Coherence」、データベース・アプライアンス「Oracle Exadata」などがあります。
以上で第2回「パフォーマンス・チューニング」は終わりです。今回は、事例からパフォーマンス問題の傾向を見た上で、ポイントをかなり絞ってまとめました。今後のシステム構想・構築に少しでもお役立ていただければ幸いです。
■データベースのパフォーマンス・チューニング参考情報
オンライン・セミナーの資料を中心にまとめました。ぜひご活用ください。
<パフォーマンス・チューニングの全体を知る>
・パフォーマンス管理始めの一歩
(http://www.oracle.com/technology/global/jp/columns/beginner/db_tuning_1st/index.html)
・パフォーマンス・チューニング入門
(http://www.oracle.co.jp/iSeminars/090910_1730/20090910_TurningBigginer.pdf)
・ディスクI/Oチューニング入門
(http://www.oracle.co.jp/iSeminars/090917_1730/20090917_DiskIOTuning_update.pdf)
・主要課題ごとの解決手法
(http://www.oracle.co.jp/iSeminars/090708_1330/SystemPerformance_090708.pdf)
<パフォーマンスをモニタリングする>
・モニタリング手法
(http://www.oracle.co.jp/iSeminars/090325_1330/Monitoring_090325.pdf)
・Statspack解析
(http://www.oracle.co.jp/iSeminars/090624_1500/Statspack_Tips_090624_2.pdf)
・GUIでパフォーマンス・チューニング:次世代データベース管理者”DBA2.0”
(http://www.oracle.co.jp/iSeminars/090413_1330/DBA20.pdf)
<パフォーマンス・チューニングを深く知る>
・Platinumが語る!現場から学ぶパフォーマンス・チューニングの極意
(http://www.oracle.co.jp/iSeminars/090624_1330/Platinum_Performance_Tuning.pdf)
・索引のチューニング
(http://www.oracle.co.jp/iSeminars/090128_0930/NSindex_tuning1.pdf)
(http://www.oracle.co.jp/iSeminars/090129_0930/NSindex_tuning2.pdf)
・オプティマイザのチューニング
(http://www.oracle.co.jp/iSeminars/090129_1330/20090129_optimizer.pdf)
・データウェアハウスのパフォーマンス・チューニング
(http://www.oracle.co.jp/iSeminars/080805_1400/id_001661.pdf)