【SQL優化器】初始化引數

楊奇龍發表於2010-09-09
一些和優化器相關的初始化引數 
 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。 
     

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-673058/,如需轉載,請註明出處,否則將追究法律責任。

相關文章