程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle數據庫進程之從屬進程詳解

Oracle數據庫進程之從屬進程詳解

編輯:Oracle數據庫基礎

I/O 從屬進程

I/O從屬進程用於為不支持異步I/O的系統或設備模擬異步I/O。例如,磁帶設備(相當慢)就不支持異步I/O。通過使用I/O 從屬進程,可以讓磁帶機模仿通常只為磁盤驅動器提供的功能。就好像支持真正的異步I/O 一樣,寫設備的進程(調用者)會收集大量數據,並交由寫入器寫出。數據成功地寫出時,寫入器(此時寫入器是I/O 從屬進程,而不是操作系統)會通知原來的調用者,調用者則會從要寫的數據列表中刪除這批數據。

采用這種方式,可以得到更高的吞吐量,這是因為會由I/O 從屬進程來等待慢速的設備,而原來的調用進程得以脫身,可以做其他重要的工作來收集下一次要寫的數據。

I/O 從屬進程在Oracle 中有兩個用途。DBWn 和LGWR 可以利用I/O 從屬進程來模擬異步I/O,另外RMAN寫磁帶時也可能利用I/O 從屬進程。

有兩個參數控制著I/O 從屬進程的使用:

BACKUP_TAPE_IO_SLAVES:這個參數指定RMAN 是否使用I/O 從屬進程將數據備份、復制或恢復到磁帶上。由於這個參數是圍繞著磁帶設備設計的,而且磁帶設備一次只能由一個進程訪問,所以這個參數是一個布爾值,而不是所用從屬進程的個數(這可能出乎你的意料)。RMAN 會為所用的物理設備啟動多個必要的從屬進程。BACKUP_TAPE_IO_SLAVES = TRUE 時,則使用一個I/O 從屬進程從磁帶設備讀寫。如果這個參數為FALSE(默認值),就不會使用I/O從屬進程完成備份。相反,完成備份的專用服務器進程會直接訪問磁帶設備。

DBWR_IO_SLAVES:這個參數指定了DBW0 進程所用I/O 從屬進程的個數。DBW0 進程及其從屬進程總是將緩沖區緩存中的髒塊寫至磁盤。這個值默認為0,表示不使用I/O 從屬進程。注意,如果將這個參數設置為一個非0 的值,LGWR 和ARCH 也會使用其自己的I/O 從屬進程,LGWR 和ARCH 最多允許4 個I/O 從屬進程。

DBWR I/O 從屬進程的名字是I1nn,LGWRI/O 從屬進程的名字是I2nn,這裡nn 是一個數。

並行查詢從屬進程

Oracle7.1.6 引入了並行查詢功能。這個功能是指:對於SELECT、CREATE TABLE、CREATE INDEX、UPDATE 等SQL 語句,創建一個執行計劃,其中包含可以同時完成的多個(子)執行計劃。將每個執行計劃的輸出合並在一起構成一個更大的結果。其目標是僅用少量的時間來完成操作,這只是串行完成同一操作所需時間的一小部分。

例如,假設有一個相當大的表,分布在10 個不同的文件上。你配置有16 個CPU,並且需要在這個表上執行一個即席查詢。另一種方法是:可以將這個查詢計劃分解為32 個小部分,並充分地利用機器;而不是只使用一個進程串行地讀取和處理所有數據。相比之下,前一種做法要好得多。

使用並行查詢時,會看到名為Pnnn 的進程,這些就是並行查詢從屬進程。處理一條並行語句時,服務器進程則稱為並行查詢協調器(parallelquery coordinator)。操作系統上服務器進程的名字並不會改變,但是閱讀有關並行查詢的文檔時,如果提到了協調器進程,你應該知道這就是原來的服務器進程。

關於Oracle數據庫進程之從屬進程的相關知識就介紹到這裡了,希望本次的介紹能夠對您有所收獲。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved