- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:オプティマイザはどちらのモードで判断しているか調べる方法を教えてください。)
オプティマイザのモード判断方法と設定場所
このQ&Aのポイント
- オプティマイザのモードを判断する方法として、CBOやRBOの設定場所を調べることができます。
- 実行されるSQLのテーブルやIndexのANALYZEの有無によって、自動的にCBOが採用される場合もありますが、ヒント文を記載しない限りはCBOが適用されると考えられます。
- 具体的な設定場所はデータベースのパラメータファイルやセッションレベルの設定などに記述されています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
表面的な事しか知らないのですが・・・ 初期化パラメータoptimizer_modeがRULEであれば、 常にルールベースです。 optimizer_modeがCHOOSEで、かつ、統計情報があれば、 コストベースの最適化が行われますが、 統計情報がない場合はルールベースになります。 なので、optimizer_modeがCHOOSEならば、 「analyzeが行われていたら~」という解釈で良いと思います。
その他の回答 (3)
- thatsthat
- ベストアンサー率55% (15/27)
回答No.4
テーブルごとです。 一度もanalyzeしていないテーブルや、統計情報を削除したテーブルは (CBOできないので)RBOになります。
質問者
お礼
ありがとうございました。助かりました。
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
回答No.3
オプティマイザモードのデフォルトは、CHOOSEです。
質問者
お礼
ありがとうございました。よくわかりました。 それでは以下の場合はどうなのでしょうか? 実行するSQLに関係するテーブルにはANALYZEをしていないのですが、他の関係ないテーブルに対しANALYZEをしている場合もCBOとなるのでしょうか? お分かりでしたら教えてください。
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
回答No.2
初期化パラメータで決まります。(オプティマイザモード) オプティマイザモードでchooseが設定されておいる場合に、1つでも統計情報が存在すれば、CBOになります。 全く統計情報が存在しないシステムの場合、chooseモードでも、RBOとなります。
質問者
お礼
回答ありがとうございました。 さっそく初期化パラメータ(init.ora)を確認したとこと なぜかoptimizer_modeのパラメータがみあたりません。 この場合どちらで動作するのでしょうか? ご存知でしたら教えてください。
お礼
ご回答ありがとうございました。 初期化パラメータファイル(init.ora)を確認したのですが、 optimizer_modeのパラメータが存在しないのです。 この場合はどちらで動作するのでしょうか? お分かりでしたら教えてください。