16章 データベースのチューニング
それでは本章ではデータベースのチューニングの考え方について学んでいきたいと思います。
データベースのチューニングとは
データベースのチューニングはDB性能を改善することです。
簡単に言えば、データベースで処理しているSQLの速度を改善することです。
DBサーバはSQLを処理するためのシステムです。秒間に何万ものSQLを処理することもあります。
またその1つ1つのSQLは0.3秒以内で終わらなければならないなんて要件があるかもしれません。
例えばインターネットの検索で数分かかるシステムなんて今では使い物になりません。
数分かかるSQL文を数秒で結果返ってくるようにするのがSQLチューニングです。
なんて簡単に言っていますが、SQLの処理速度を改善するポイントは多くあるため、
チューニングするには様々な知識が必要です。
今回はチューニングに関するポイントとその性能問題を解決するために、Oracleが提供している機能を紹介する程度となります。
詳しく知っていきたい方は上級で紹介しています。
DB性能の問題点
データベースのチューニングはSQLの速度を改善することですね。
それではどのように改善すればよいのでしょうか。
まずはDBサーバの仕組みを考えていきましょう。
SQLを処理するときにはCPUが使用され、データを取得するためにはディスクI/Oが
発生します。SQLの処理量が多くなればCPU使用率、ディスクI/Oは高くなります。
SQLの処理量が増えてCPUの消費量が高くなるのは通常であり、問題ではありません。
ただし、非効率なSQL文によりCPUが高騰しているのであれば、SQLチューニングが必要です。
またCPU使用率は高くないけど、SQL処理が遅延している場合はSQLを待機させる原因があるかもしれません。
DBチューニングの種類
データベースのパフォーマンスチューニングは大きく2つのタイプがあります。
チューニングはパフォーマンスが劣化する前に実施する事前チューニング、
パフォーマンス劣化後に実施する事後チューニングの2種類があります。
各チューニングで役に立つツールは以下の通りです。
事前チューニング
・ ADDM(Automatic Database Diagnostics Monitor)
・ STATSPACK
事後チューニング
・ アドバイザ機能
望ましいのは事前チューニングで重大なパフォーマンス低下を防ぐことです。
事前チューニング時に使用できるツールは有償オプションのADDMもしくは無償で
使用可能なSTATSPACKがあります。
STATSPACKは定期的にDB性能情報を取得し、レポート化を行い、DB性能情報を調査するツールです。
基本的にインストールから取得、レポート作成は手動で行います。そのため、STATSPACKでの事前チューニングはDBチューニングの知識が必要です。
ADDMは有償オプションですが、STATSPACKで必要なことをすべて自動で行ってくれます。性能問題の調査も自動で実施してくれるため、
詳しい知識がなくても事前チューニングが実施可能です。
ADDM
ADDMは自動的にDBの性能情報(AWRスナップショット)を取得し、その情報から自動的にDBの性能を分析します。
このADDMはSYSAUX表領域に格納されるAWRスナップショットを使用し、
診断を行います。このAWRスナップショットはMMONによりデフォルト1時間に
1回取得されます。保持期間はデフォルト8日間です。
アドバイザ
事後チューニングを行う際にも、手動でチューニングする方法と、自動で行ってくれるアドバイザ機能があります。
アドバイザ機能に関してはオプションです。ただしオプションが不要なものもありますのでその都度ご案内します。
・SQLチューニングアドバイザ
SQL文を分析しより良いパフォーマンスとなるような推奨事項を調べてくれます。
・SQLアクセスアドバイザ
索引やマテリアライズドビューを作成する為の推奨事項を調査してくれます。
・メモリアドバイザ
データベースバッファキャッシュ、共有プール、PGAなどの
領域に対し、どれくらいの領域が適切かを教えてくれます。
・セグメントアドバイザ
断片化が発生しているオブジェクトを調査し、断片化解消すべきかどうかを
調査してくれます。
・UNDOアドバイザ
UNDO表領域のサイズを見積もる為の情報を提供してくれます。
このアドバイザは非常に便利な機能で、このツールを使用することで、
データベースのチューニングに必要な情報をまとめてくれます。
またアドバイザによっては自動的に調査し、推奨事項を提示してくれます。
これを使用すると作業がだいぶ楽になります。
いかがでしたでしょうか。データベースチューニングといっても
本当に初歩的な内容となりましたが、色々な自動チューニング機能が
あるということをご認識したのではないでしょうか。
中級コースでは実際にどんな機能なのか詳しく紹介していきます。
本章は以上です。お疲れ様でした。