Oracle 11gr2中的自動並行度
在Oracle 11.2.0.2中只有I/O統計資料被收集才能使用自動並行度。當parallel_degree_policy被設定為auto時,Oracle資料庫將會基於執行計劃中操作的成本和硬體特性來判斷是否使用並行,當在語句級別使用parallel或parallel(auto)暗示不管parallel_degree_policy設定為何值都會使用自動並行。
IO Calibration
硬體特性包括IO Calibration統計資料,因此這些統計資料必須被收集否則Oracle資料庫將不會使用自動並行這個功能。下面的執行計劃是在沒有收集IO Calibration統計資料時生成的,在執行計劃的note部分可以看到"skipped because of IO calibrate statistics are missing"這樣的資訊
SQL> set long 900 SQL> set linesize 900 SQL> set autotrace traceonly explain SQL> select /*+ parallel */ * from emp; Execution Plan ---------------------------------------------------------- Plan hash value: 2873591275 -------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | TQ |IN-OUT| PQ Distrib | -------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 14 | 1218 | 2 (0)| 00:00:01 | | | | | 1 | PX COORDINATOR | | | | | | | | | | 2 | PX SEND QC (RANDOM)| :TQ10000 | 14 | 1218 | 2 (0)| 00:00:01 | Q1,00 | P->S | QC (RAND) | | 3 | PX BLOCK ITERATOR | | 14 | 1218 | 2 (0)| 00:00:01 | Q1,00 | PCWC | | | 4 | TABLE ACCESS FULL| EMP | 14 | 1218 | 2 (0)| 00:00:01 | Q1,00 | PCWP | | -------------------------------------------------------------------------------------------------------------- Note ----- - dynamic sampling used for this statement (level=2) - automatic DOP: skipped because of IO calibrate statistics are missing
Oracle提供了PL/SQL包dbms_resource_manager.calibrate_io來收集IO Calibration的統計資料。收集IO Calibration統計資料的持續時間由num_disks變數與RAC中節點數決定的。
SQL> select * from V$IO_CALIBRATION_STATUS; STATUS CALIBRATION_TIME ------------- --------------------------------------------------------------------------- NOT AVAILABLE SET SERVEROUTPUT ON DECLARE lat INTEGER; iops INTEGER; mbps INTEGER; BEGIN --DBMS_RESOURCE_MANAGER.CALIBRATE_IO(, ,iops, mbps, lat); DBMS_RESOURCE_MANAGER.CALIBRATE_IO (1, 10, iops, mbps, lat); DBMS_OUTPUT.PUT_LINE ('max_iops = ' || iops); DBMS_OUTPUT.PUT_LINE ('latency = ' || lat); dbms_output.put_line('max_mbps = ' || mbps); END; /
注意DBMS_RESOURCE_MANAGER.CALIBRATE_IO的前兩個引數分別為num_disks,max_latency是輸入變數,並且有三個輸出變數。
num_disks:為了獲得最精確的結果,最好提供資料庫所使用的真實物理磁碟數。如果是使用ASM來管理資料庫檔案,那麼就是指儲存資料的磁碟組,那麼只有儲存資料的磁碟組中的物理磁碟作為num_disks變數值,不包含FRA磁碟組中的物理磁碟。
latency:對資料庫塊IO操作允許的最大延遲
SQL> set long 900 SQL> set linesize 900 SQL> SET SERVEROUTPUT ON DECLARE SQL> 2 lat INTEGER; 3 iops INTEGER; 4 mbps INTEGER; 5 BEGIN 6 --DBMS_RESOURCE_MANAGER.CALIBRATE_IO(, ,iops, mbps, lat); 7 DBMS_RESOURCE_MANAGER.CALIBRATE_IO (1, 10, iops, mbps, lat); 8 DBMS_OUTPUT.PUT_LINE ('max_iops = ' || iops); 9 DBMS_OUTPUT.PUT_LINE ('latency = ' || lat); 10 dbms_output.put_line('max_mbps = ' || mbps); 11 END; 12 / max_iops = 390 latency = 9 max_mbps = 112 PL/SQL procedure successfully completed.
為了驗證是否IO Calibration統計資訊收整合功,在執行dbms_resource_manager.calibrate_io後查詢v$io_calibration_status
SQL> select * from V$IO_CALIBRATION_STATUS; STATUS CALIBRATION_TIME ------------- --------------------------------------------------------------------------- READY 13-APR-16 10.12.58.413 PM
再次執行看是否能使用自動並行度
SQL> set autotrace traceonly explain SQL> select /*+ parallel */ * from emp; Execution Plan ---------------------------------------------------------- Plan hash value: 2873591275 -------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | TQ |IN-OUT| PQ Distrib | -------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 14 | 532 | 2 (0)| 00:00:01 | | | | | 1 | PX COORDINATOR | | | | | | | | | | 2 | PX SEND QC (RANDOM)| :TQ10000 | 14 | 532 | 2 (0)| 00:00:01 | Q1,00 | P->S | QC (RAND) | | 3 | PX BLOCK ITERATOR | | 14 | 532 | 2 (0)| 00:00:01 | Q1,00 | PCWC | | | 4 | TABLE ACCESS FULL| EMP | 14 | 532 | 2 (0)| 00:00:01 | Q1,00 | PCWP | | -------------------------------------------------------------------------------------------------------------- Note ----- - automatic DOP: Computed Degree of Parallelism is 2
可以看到在收集IO Calibration統計資訊後,執行計劃使用自動並行度。
當使用自動並行度,可以還需要調整一些調整引數。parallel_servers_target引數應該總是比parallel_max_servers引數值小,parallel_servers_target總是處於parallel_max_servers的75%到50%。如果開始看到大量並行度下降,那麼應該使用這兩個參靈敏的差距增大。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2080869/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle11g 自動並行Oracle並行
- oracle 中並行度的設定需要考慮的因素Oracle並行
- Oracle中的並行Oracle並行
- oracle表查詢的並行度Oracle並行
- Oracle 中的並行系列(一)Oracle並行
- Oracle中job無法自動執行Oracle
- EXPDP/IMPDP 中的並行度PARALLEL引數並行Parallel
- 來自czmmiao深入理解Oracle的並行操作Oracle並行
- 【自動化】淺度分析自動化行業,深度好文!行業
- Oracle的並行Oracle並行
- Oracle中的並行系列(二):你設定的並行真的生效了嗎?Oracle並行
- 分割槽索引的並行度索引並行
- oracle的並行世界Oracle並行
- Oracle 11.2中控制並行的新引數Oracle並行
- 檢視錶並行度並行
- RMAN並行度衝突並行
- oracle (11gR2)中的表壓縮Oracle
- 處理Oracle 11gR2 RAC資料庫資源不能自動啟動的問題Oracle資料庫
- Oracle並行操作——並行DML操作Oracle並行
- 配置 Oracle 11gR2 在 CentOS6 上開機自啟動OracleCentOS
- Oracle的並行操作[轉]Oracle並行
- Oracle Database 19c中的自動索引OracleDatabase索引
- Oracle9i中的PGA自動管理Oracle
- Oracle並行操作——淺議使用並行的時機Oracle並行
- CSS設定超出指定寬度自動換行CSS
- 處理Oracle 11gR2 RAC資料庫資源不能自動啟動的問題 (轉)Oracle資料庫
- 在oracle 叢集多例項中執行並行操作Oracle並行
- Oracle並行操作——從序列到並行Oracle並行
- [Shell] 自動生成oracle awr report並mail出來OracleAI
- Oracle並行FAQOracle並行
- 並行查詢並行度Degree與instances 設定並行
- 如何設定Storm並行度ORM並行
- windows自動登入linux 並執行指令碼WindowsLinux指令碼
- 如何取得Oracle並行執行的traceOracle並行
- oracle並行的小細節Oracle並行
- oracle的Parallel 並行技術OracleParallel並行
- 自動化平臺中維度設計的一點思考
- Oracle並行操作——並行查詢(Parallel Query)Oracle並行Parallel