Oracle“並存執行”之三——參數

來源:互聯網
上載者:User

標籤:blank   資料庫   target   手工   輸送量   

摘自《VLDB and Partitioning Guide》

 

系統參數中直接涉及到參數,見Table 8-3,包括每個參數的預設值。這些參數的預設值,依賴於資料庫啟動時的參數CPU_COUNT 和 PARALLEL_THREADS_PER_CPU。這些參數可手工調整,增加或減少它們的值以適應系統配置需要或效能目標,比如:

  • 對於不需要並存執行的系統,參數PARALLEL_MAX_SERVERS可設定為0。
  • 對於擁有充裕SGA記憶體的系統,可增加PARALLEL_EXECUTION_MESSAGE_SIZE參數的值以改善輸送量。

650) this.width=650;" title="clipboard" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; padding-right: 0px" border="0" alt="clipboard" src="http://s3.51cto.com/wyfs02/M02/83/9C/wKioL1d35kPj7kg0AAH2TIIAP6o273.png" "710" height="579" />

650) this.width=650;" title="clipboard[1]" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; padding-right: 0px" border="0" alt="clipboard[1]" src="http://s3.51cto.com/wyfs02/M02/83/9C/wKioL1d35kTTzj8oAABiN7n8Nt8193.png" "715" height="110" />

註:上述並行相關參數可能還受限於其它系統參數。比如,如果PROCESSES參數設定為20,那麼系統不可能擷取25個並行伺服器子進程,即使PARALLEL_MAX_SERVERS參數設定為25。

PARALLEL_FORCE_LOCAL

這個參數設定是否將並存執行語句限定在RAC環境中的單一實例上。設定此參數為TRUE,則會將並行伺服器限制在並行協調器所在的執行個體上運行。預設值為FALSE。

PARALLEL_MAX_SERVERS

預設值為:

PARALLEL_THREADS_PER_CPU x CPU_COUNT x concurrent_parallel_users x 5

其中:concurrent_parallel_users值依賴於記憶體管理方式。如果禁用自動記憶體管理,concurrent_parallel_users取值為1;如果啟用PGA自動記憶體管理,concurrent_parallel_users取值為2;如果啟用全域記憶體管理或SGA記憶體管理(除了啟用PGA自動記憶體管理之外),concurrent_parallel_users取值為4。

對於要求並行度比較高的情況,也可設定為:

2 x DOP x NUMBER_OF_CONCURRENT_USERS

舉例來說,如果每個查詢允許使用兩組並行伺服器且DOP為8,設定此參數為64則允許系統同時並行運行4條查詢語句。

何時增加PARALLEL_MAX_SERVERS值:系統擁有充足記憶體和IO頻寬,方可增加此參數值。通過效能監控工具觀察系統有多少閒置記憶體、SWAP空間和IO頻寬,觀察CPU和磁碟的隊列長度,IO操作的服務時間。限制並行伺服器的數量,可能會限制並發使用者的數量(可能運行並行語句),但這樣會讓系統更穩定。

使用消費者組限制一個並發使用者的資源使用數量。具體方式就是:為這個使用者佈建消費者組,然後為這個消費者組設定並行度。

PARALLEL_MIN_PERCENT

這個參數(大於0時)可以讓並發使用者等待一個可接受的DOP,如果一定時間內系統滿足要求的並行伺服器數量,系統會提示報錯:ORA-12827: insufficient parallel query slaves available。

此參數預設值為0,意味著:如果沒有足夠數量的並行伺服器,則直接轉為串列執行,不會報ORA-12827錯誤。

PARALLEL_MIN_SERVERS

可以用這個參數設定單個執行個體啟動時一起啟動的並行伺服器。這些並行伺服器,一直存在,直到資料庫執行個體關閉。

PARALLEL_MIN_TIME_THRESHOLD

這個參數用來設定SQL語句考慮AUTO DOP時需要滿足的最小執行時間。這個最小執行時間,是系統評估出來的。預設為10秒,即只有執行時間超過10秒的語句才會考慮AUTO DOP。另外,這個參數也只有啟用AUTO DOP才會生效,即只有參數PARALLEL_DEGREE_POLICY設定為AUTO或LIMITED才會生效。

PARALLEL_SERVERS_TARGET

這個參數用來設定SQL語句排隊前當前並行伺服器數量的最大值。預設值為:

PARALLEL_THREADS_PER_CPU * CPU_COUNT * concurrent_parallel_users * 2

其中concurrent_parallel_users計算方法見PARALLEL_MAX_SERVERS參數部分。

當參數PARALLEL_DEGREE_POLICY為AUTO時,如果當前系統的正在使用的並行伺服器數量等於或超過PARALLEL_SERVERS_TARGET參數值,則後續SQL語句會進入隊列等候。這個參數的主要出發點就是防止過度使用並行伺服器,導致系統效能過載。

SHARED_POOL_SIZE

並存執行需要額外的記憶體,除了需要同串列執行一樣的記憶體資源之外。這些額外的記憶體,用於查詢服務器、查詢協調器之間的溝通和傳輸資料。

資料庫從SHARED_POOL中為並行伺服器分配記憶體。調優的主要規則如下:

1)首先為共用池的其它使用者考慮,比如遊標、預存程序等;

2)謹記多使用者環境中大一點的值能夠改善效能,而小一點的值則節省記憶體;

3)你可以監測到並存執行使用的buffer數量,然後將large pool中PX msg pool值與V$PX_PROCESS_SYSSTAT中的並行使用過的最大buffer數量(Buffers HWM)進行比較。

舉例如下:

1)執行SQL查詢large pool中PX msg pool值

SELECT POOL, NAME, SUM(BYTES) FROM V$SGASTAT WHERE POOL LIKE ‘%pool%‘

GROUP BY ROLLUP (POOL, NAME);

POOL          NAME                SUM(BYTES)

large pool    PX msg pool      38092812

2)

SELECT * FROM V$PX_PROCESS_SYSSTAT WHERE STATISTIC LIKE ‘Buffers%‘;

STATISTIC                                 VALUE

-------------------                      -----

Buffers Allocated                     23225

Buffers Freed                           23225

Buffers Current                        0

Buffers HWM                           3620

3)當前使用的記憶體buffer數可通過Buffers Current 和 Buffers HWM統計資訊獲得。此數量乘以PARALLEL_EXECUTION_MESSAGE_SIZE參數值,即為使用的記憶體位元組數。用高水位記憶體位元組數,同PX msg pool值進行比較,以此來判斷你分配的記憶體是否過大還是過小。上面的px msg pool值為38092812,即38MB。Buffers HWM值為3620,乘以PARALLEL_EXECUTION_MESSAGE_SIZE參數值,4096,等於14827520,即15MB。並行緩衝區高水位佔用分配記憶體數量的40%。

PGA_AGGREGATE_TARGET

使用PGA_AGGREGATE_TARGET參數可以控制process的使用記憶體大小,也可以控制process的數量。同時設定PGA_AGGREGATE_TARGET和MEMORY_TARGET參數,可以繼續啟用自動調優,但當PGA_AGGREGATE_TARGET低於指定值時不被調整。

PARALLEL_EXECUTION_MESSAGE_SIZE

此參數指定並存執行使用的buffer大小。預設值依賴於作業系統平台,大多數為16K,此值可滿足絕大多數應用系統的需要。

TRANSACTIONS

對於並行DML和DDL來說,每個並行伺服器都會啟用一個事務。並存執行協調器使用二階段提交協議來提交一個事務,因此,事務數量隨著DOP的增加而增加。所以,在並存執行情況下,你可能需要增加TRANSACTIONS參數的值。

這個參數用來指定最大並發事務數。預設情況下未考慮並行。比如,你有一個並行語句,DOP為20,系統就會有20個新的事務(如果有2個並行伺服器組,則會有40個新事務)和1個協調器事務。這種情況下,你就應該將TRANSACTIONS參數值加上21或41。如果未顯式設定此參數,預設為1.1 x SESSIONS。

FAST_START_PARALLEL_ROLLBACK

如果系統崩潰時有未提交的並行DML和DDL事務,設定此參數可以加速事務的恢複速度(系統重新啟動時)。這個參數決定了事務恢複的DOP。這個參數的預設值為CPU_COUNT參數值的2倍。如果預設值不滿足要求,則可以將這個參數設定為HIGH(CPU_COUNT參數值的4倍)。

DML_LOCKS

這個參數設定DML鎖的最大數量。它的值應該等於所有使用者下所有表上鎖的數量。並行DML的鎖數量,完全不同於串列DML。並行DML需要更多的鎖,所以需要增加DML_LOCKS參數值。

Table 8–4列出了不同類型的並行DML語句其並行協調器、並行伺服器需要的鎖情況。可以根據這個資訊,決定如何設定這個參數值。

650) this.width=650;" title="clipboard[2]" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; padding-right: 0px" border="0" alt="clipboard[2]" src="http://s3.51cto.com/wyfs02/M02/83/9D/wKiom1d35kWyLZ6rAAEQnX1pRvE339.png" "624" height="439" />

650) this.width=650;" title="clipboard[3]" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; padding-right: 0px" border="0" alt="clipboard[3]" src="http://s3.51cto.com/wyfs02/M00/83/9C/wKioL1d35kbijaFdAADXkxNbvlI016.png" "622" height="365" />

比如,有一個600個分區的表,DOP為100。假設所有分區都涉入並行UPDATE或DELETE語句且不存在行移植。那麼,

並行協調器將獲得:

1 table lock SX

600 partition locks X

並行伺服器將獲得:

100 table locks SX

600 partition locks NULL

600 partition-wait locks S

DB_CACHE_SIZE

當你執行並行update、merge或delete時,buffer cache的行為就好像OLTP系統中執行大量的UPDATE操作一樣。

DB_BLOCK_SIZE

建議使用大一點的值,比如8 KB 或 16 KB。

DB_FILE_MULTIBLOCK_READ_COUNT

這個參數決定了一次作業系統“讀”能夠讀取的資料庫塊數。它的預設值是最大的IO大小,依賴於具體系統平台(對於大多數平台來說,這個值為1M)。如果DB_FILE_MULTIBLOCK_READ_COUNT參數設定地過高,資料庫啟動時會將此參數調降為最大IO大小。

DISK_ASYNCH_IO 和 TAPE_ASYNCH_IO

建議這兩個值為TRUE。

這兩個參數可以啟用作業系統的非同步IO功能。它們允許在執行表掃描時同時進行IO請求和CPU處理。如果作業系統允許非同步IO,建議設定這些參數為TRUE。Figure 8–6描述了非同步讀是如何工作的。

650) this.width=650;" title="clipboard[4]" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; padding-right: 0px" border="0" alt="clipboard[4]" src="http://s3.51cto.com/wyfs02/M00/83/9D/wKiom1d35kfwS8XbAABPydHnx78199.png" "469" height="291" />

非同步作業支援並行表掃描、HASH串連、排序和串列表掃描。這個特性要求作業系統的配置,可能會不支援某些系統平台。

Oracle“並存執行”之三——參數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.