天天看點

【SQL優化器】初始化參數

一些和優化器相關的初始化參數 

 1、optimizer_features_enable 

 每個版本的oracle 優化器特性都不相同,特别是做了版本更新以後一定要修改這個參數才可以使用僅被該版本支援的優化器特性。 

 可以賦予它的值如:9.2.0、9.0.2、9.0.1、8.1.7、8.1.6 等。 

 2、cursor_sharing 

 這個參數會将sql 語句中的常量用變量來替換,存在大量常量的oltp 系統可以考慮啟用這個參數。但是有一點要明白,綁定變量雖然可以使大量的sql 重用,減少分析時間,但是當資料分布發生變化後,cbo 為綁定變量sql 生成的執行計劃可能不是最優(不會考慮具體的變量值)。通常oltp 系統适用于綁定變量,oltp 系統特點是,sql 運作頻繁且時間相對較短,sql 的分析時間比重較大。如果在dss 系統中,sql 運作時間長,相比之下分析時間微不足道,好的執行計劃才是最重要的,是以dss 系統綁定變量要另行考慮。 

 3、hash_area_size 

 這是散列連接配接時散清單的存放區域,如果使用散列連接配接這個參數值不能過小,如果散清單不能完全存放于記憶體中,對散列連接配接性能的影響很大。如果是9i 建議啟動工作區自動管理,然後設定pga_aggregate_target。 

 4、sort_area_size 

 記憶體排序區的大小,如果排序時記憶體區不夠會寫如磁盤。9i 同樣建議啟動工作區自動管理,然後設定pga_aggregate_target。 

 5、hash_join_enabled 

 如果啟用這個參數,cbo 在考慮連接配接方法的時候将會考慮散列連接配接。 

6、optimizer_index_caching 

 這個參數表示被緩存的索引塊所占百分比,可選值的範圍是0-100。這個值會影響嵌套循環連接配接,如果這個值設得較高,cbo 将更傾向使用嵌套循環。 

 7、optimizer_index_cost_adj 

 優化器利用這個參數(是個百分比)把索引掃描的成本轉換為等價的全表掃描的成本,然後與全表掃描的成本進行比較。預設值100,表示索引掃描成本與全表掃描成本等價。可選值範圍是0-10000。 

 8、optimizer_max_permutations 

 這個初始參數用來設定優化器最多考慮多少種連接配接順序,優化器不斷的産生可能的表的連接配接的排列,直到排列數達到參數optimizer_max_permutations 為止。一旦優化器停止産生新的可能連接配接排列,它将會從中選擇出成本最小的排列。 

 9、db_file_multiblock_read_count 

 這個參數表示在全表掃描或索引快速全掃描時一次i/o 讀的連續資料塊數量(block#連續,且一次i/o 不能超過extent)。 

 10、optimizer_mode 

 優化器模式,也是優化器的優化目标。值為:rule、choose、all_rows、first_rows_n、first_rows。 

 11、partition_view_enabled 

 如果設定為true, 該優化器将跳過分區視圖中未被請求的分區,該參數還能更改基于成本的優化程式從基礎表統計資訊計算分區視圖統計資訊的方式。 

 12、query_rewrite_enable 

 如果設定為true,優化器将利用可用的物化視圖來重寫sql。