Oracle 11g 新特性之DRCP

Hoegh發表於2015-03-19
在Oracle 11g中,提出了突破傳統專用/共享連線的第三種連線方式——Database Resident Connection Pooling(DRCP)。
 
1、從Dedicated Server到Shared Server
 
Oracle Client Process連線到Server Process的方式,傳統上有兩種方式:Dedicated Server和Shared Server。在Client連入到Oracle Server的過程中,預設是透過監聽器listener監聽器進行Oracle例項服務定位。只有再由監聽器fork出的子程式向Instance請求出一個Server Process與Client Process遠端通訊。不同的連線方式,就體現在資料庫例項在接受到Server Process請求後,是怎麼樣提供出Server Process程式,以及該程式如何管理的。
 
Dedicated Server模式也稱為專用連線方式,就是Oracle Instance會專門建立出一個新的Server Process與Client Process進行遠端通訊。在整個Client Process請求過程中,Server Process只為該Client提供服務。UGA資訊也儲存在Server Process的PGA空間中。當會話結束,Client連線中斷,Server Process就失去“存在意義”被清除掉,分配記憶體回收。Dedicated方式是我們最常使用的資料庫連線方式。在長會話或前端應用使用連線池元件的情況下,Dedicated方式的優勢是很明顯的。
 
與Dedicated Server模式對應的是Shared Server。在該模式下,Oracle例項會維持兩種Server Process:分發程式(Dispatcher DXXX)和共享程式(SXXX)。
 
 
SQL> select addr, pid, spid, username, program from v$process where program like '%000%';
 
ADDR           PID SPID        USERNAME       PROGRAM
-------- ---------- ------------ --------------- --------------------
6D24BA1C        13 648         SYSTEM         ORACLE.EXE (D000)
6D24C00C        14 1736        SYSTEM         ORACLE.EXE (S000)
 
 
 
當監聽器向資料庫例項提出Server Process分配請求的時候,在Shared Server模式下,監聽器會向分發程式DXXX請求分配Server Process。DXXX會根據當前的空閒Server情況,分配出一個Server Process供使用。當Client使用結束之後,Server Process(SXXX)並不是被釋放,而是重新回到D000管制下。系統也會依據引數設定,維持一個穩定的SXXX數量。
 
 
SQL> show parameter shared_servers
 
NAME                                TYPE       VALUE
------------------------------------ ----------- ------------------------------
max_shared_servers                  integer    
shared_servers                      integer    1
 
 
Shared Server連線模式的出現,是和短會話、高併發的網際網路應用發展相關。每次建立和回收Server Process的成本是很高的。如果應用沒有中間層連線池,而是高併發的建立Server Process並且快速回收,這對於資料庫來說是很高的壓力。
 
從現在的應用設計開發看,連線池管理已經滲透入主流應用系統框架,shared server方式實際中應用不是很廣泛。
 
2、Database Resident Connection Pooling(DRCP)
 
如果我們站在軟體模式的角度看,Shared Server本質上也是想實現一種在資料庫層面上的連線池。這點在Oracle 11g上得到了實現,Oracle駐留連線池(DRCP)就是一個允許在多程式(Multi-Process)和多執行緒(Multi-Threads)之間共享連線的新特性。
 
Shared server在一定程度上緩解了Server process IDEL和頻繁建立銷燬Server process的問題。但是,Shared Server沒有解決Session資料共享的問題。當存在client需要長時間持有session,同時其他client沒有大量會話要求的時候,這種模型是有效的。但是,在每次請求會話的時間很短(短會話)和資料庫活動需要多次會話互動的時候,DRCP就是更加理想的連線池模型了。
 
DRCP新特性主要針對的就是應用程式在訪問資料庫時,出現高併發連線數問題。DRCP連線池將Server和Session資訊進行快取,為多個訪問的應用程式提供連線共享。
 
同Shared Server一樣,DRCP前端存在一個代理(Connection Broker),負責應用中介軟體連線的共享要求,同時負責管理資料庫例項上的連線池連線。當應用中介軟體想Broker提出連線請求的時候,Broker會從連線池中找出空閒連線。當互動結束後,Server Process被釋放回連線池供重用。
 
同shared server不同的方面在於。當共享池中連線池被分配出之後,等價於dedicated server方式。

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

相關文章