【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。
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server SQL效能優化之引數化SQLServer優化
- Oracle SQL92_SECURITY初始化引數OracleSQL
- 【SQL 效能優化】引數設定SQL優化
- oracle初始化引數Oracle
- Oracle幾個初始化引數Oracle
- Oracle RAC初始化引數管理Oracle
- oracle 常見初始化引數Oracle
- ORACLE初始化引數的配置Oracle
- Linux系統初始化*引數初始化(指令碼)Linux指令碼
- ActiveMQ 引數優化MQ優化
- 2.6.2.2 初始化引數DB_DOMAINAI
- 2.6.1.1 初始化引數檔案示例
- Oracle初始化引數的來源Oracle
- ORACLE初始化引數:AUDIT_TRAILOracleAI
- Oracle FILESYSTEMIO_OPTIONS初始化引數Oracle
- 初始化引數REMOTE_OS_AUTHENTREM
- Oracle控制優化器偏好--optimizer_mode引數Oracle優化
- Oracle查詢優化器的相關引數Oracle優化
- Myisam & InnoDB 優化引數優化
- MySQL引數配置優化MySql優化
- 4.2.1.3 學習如何管理初始化引數
- 0607-引數初始化策略
- webpack 流程解析(2):引數初始化完成Web
- 初始化引數REMOTE_LOGIN_PASSWORDFILEREM
- ORACLE初始化引數檔案介紹Oracle
- RCU-資料庫初始化引數資料庫
- Oracle 並行相關的初始化引數Oracle並行
- Oracle USE_LARGE_PAGES初始化引數Oracle
- Oracle初始化引數設定new(轉)Oracle
- 查詢初始化引數的方法(二)
- 查詢初始化引數的方法(一)
- 查詢初始化引數的方法(七)
- 查詢初始化引數的方法(六)
- 查詢初始化引數的方法(五)
- 查詢初始化引數的方法(四)
- 查詢初始化引數的方法(三)
- MogDB 2.1.1 初始化引數概要說明
- Mysql優化系列(1)--Innodb重要引數優化MySql優化