Home » database » オプティマイザ

オプティマイザ

オプティマイザ(optimizer)とは、SQLを効率的に実行するための仕組みのことであり、SQLの最適化及び実行計画(データへのアクセスパス)の作成を行います

オプティマイザには、ルールベースオプティマイザ(RBO:Rule Base optimizer 構文駆動型)とコストベースオプティマイザ(CBO:Cost Base optimizer 統計駆動型)があります

ルールベースオプティマイザ(RBO:Rule Base optimizer 構文駆動型)は、SQL構文のルールに基づき実行計画を選択する方法で、当初はこちらが主流でした

Oracle10g以降はサポートされなくなりました

ヒント句によってルールベースオプティマイザを使用することが可能です

◆メリット

・統計情報に左右されないというメリットがあります

◆デメリット

・データ量やインデックス量の増加など環境変化に対応できないというデメリットがあります

・ハッシュ結合、パラレルクエリ、パーティション表の機能など最新の機能が使えないというデメリットがあります

 

コストベースオプティマイザ(CBO:Cost Base optimizer 統計駆動型)は、統計情報に基づきリソースコストの最も低い実行計画を選択する方法です

現在はこちらが主流です

◆メリット

・データ量やインデックス量の増加など環境変化に対して対応できるというメリットがあります

・JOINの順序やINDEXの使用などヒント句により制御できるというメリットがあります

◆デメリット

・統計情報により実行計画が変わるため、ある日突然パフォーマンスに影響が出る可能性があります

・統計情報の管理(固定化など)が必要になる可能性があります。これがSPM機能を必要する背景となっています