
Oracle SQLチューニング Season2(第15回)第3章「Object情報分析及び活用方法」
今回のSQLチューニングブログ 2nd season(第15回)は「 object情報分析及び活用方法 」について解説していきます。
SQLチューニングのためには、そのSQLがどのように動いていて、データベースにどのように影響しているのか、を把握する必要があります。『MaxGauge』があれば簡単に状況が把握でき、適切なSQLチューニングができるようになります。
『MaxGauge』の資料はこちらから。
3.2 Object情報分析及び活用方法
SQLチューニングを行う時、SQLに使用されるObject情報を把握することは必然的なプロセスです。
SQLで使用するテーブル、パーティション、インデックス、関数、プロシージャー、ビューなどに関する情報をきちんと把握していない状態で性能改善を行うことは簡単な作業ではありません。
— Table とそれに伴うIndex情報、TableのPartitionの有無などを事前に把握せずに性能改善をすることも不可能です。
更には、Indexに含まれるカラムとその順序、TableのサイズとPartitioningの有無などについても事前に把握しておきましょう。
これらのプロセスを行わないままチューニングを進めてしまうと、正しい性能改善を行うことができません。
3.2.1 インデックス構成情報を把握
SQLの性能改善においてIndexの存在は絶対的です。
Where節でカラムの比較がどうなるかによってIndexのScanが可能であるかどうか、Indexの効率性などが決定されます。
まずIndexがどのように構成されているかを把握することはとても基本的なことで、当然通過しなければならないプロセスです。
テーブルに生成されたIndex構成情報は、Dictionary Viewを通じて確認することができます。
dba_indexes、dba_ind_columns、dba_ind_expressionsなどを通じてIndex構成情報を確認することができます。
尚、抽出する方法は下記の通りとなります。
3.2.2 テーブル構成情報を活用する
テーブルの構成情報を把握することも性能改善時には、非常に重要な情報となります。
当該テーブルがパーティションになっているか、パーティションテーブルであれば、パーティションキーはどのようなカラムで構成されているかについては、きちんと確認しておく必要があります。
また、非パーティションテーブルの場合、当該テーブルのサイズとSQLの使用目的、I/O量、Where節に共通的に入力される条件などを考慮して、今後パーティションに変更する時、テーブル構成情報を確認することは非常に重要です。
dba_tables、dba_tab_columns、dba_tab_parititons、dba_part_key_columns、dba_subpart_key_columns、dba_segments、dba_hist_seg_statなどを通じてテーブル構成情報を確認することができ、抽出方法は下記の通りです。
また、テーブルの統計情報も非常に重要です。
該当カラムの効率を判断することができれば、テーブルのIndexを構成する場合、多くの助けを得ることができます。
テーブル構成カラムの情報を確認することができる抽出方法は下記の通りです。
次回SQLチューニングブログは・・・
SQLチューニングブログ 2nd Season(第16回)
「業務情報分析及び活用方法」について
SQLチューニングのためには、そのSQLがどのように動いていて、データベースにどのように影響しているのか、を把握する必要があります。『MaxGauge』があれば簡単に状況が把握でき、適切なSQLチューニングができるようになります。
『MaxGauge』の資料はこちらから。