建立與Oracle資料庫伺服器連線的兩種連線模式(專用伺服器與共享伺服器)
專用伺服器模式就是說每次在對Oracle進行訪問的時候,Oracle伺服器的Listener會得到這個訪問請求,然後回為這個訪問建立一個新的程式來進行服務。所以說,對於每一個客戶端的訪問,都會生成一個新的程式進行服務,是一種類似一對一的對映關係。這種連線模式的一個很重要的特點就是UGA(使用者全域性域)是儲存在PGA(程式全域性域)中的,這個特性也很好說明了當前使用者的記憶體空間是按照程式來進行分配的。
而另外的共享伺服器連線則是一種在程式編寫的時候通常會用到的連線池(pool)的概念。採用這種模式的話,在資料庫的初始化的時候就會建立一批伺服器連線的程式,然後把這些連線程式放入一個連線池來進行管理。初始化的池中的程式數量在資料庫初始化建立的時候是可以手動設定的。在連線建立的時候,Listener首先接受到客戶端的建立連線的請求,然後Listener去生成一個叫做排程器(dipatcher)的程式與客戶端進行連線。排程器把把客戶端的請求放在SGA(系統全域性域)的一個請求佇列中,然後再共享伺服器連線池中查詢有無空閒的連線,然後讓這個空閒的伺服器進行處理。處理完畢以後再把處理結果放在SGA的相應佇列中。排程器透過查詢相應佇列,得到返回結果,再返回給客戶端。這種連線模式的優點在於伺服器程式的數量可以得到控制,不大可能出現因為連線人數過多而造成伺服器記憶體崩潰。但是由於增加了複雜度以及請求相應佇列,可能效能上有所下降。
總之,談到兩種連線方式的優點和缺點,真的是各有千秋。在專用伺服器模式下,優點就是每個使用者都有一個連線,所以大家不至於有的應用佔著連線造成別的客戶的請求給掛起了。而最大的缺點在於記憶體管理上,因為隨著連線數的增加,每增加一個連線,就要分配一份PGA,如果增加10000個連線,那就是10000個PGA要提供,記憶體很容易吃爆掉。而共享連線方式優點在於連線數量固定,所以記憶體數量不會佔用很多,不過在資料庫初始化的時候,共享伺服器就要初始化好,比如有100個共享伺服器,由於共享連線模式下,UGA是分配在PGA中的,所以初始化的時候需要初始化比較多的記憶體,也就是那100個UGA的記憶體。另外共享伺服器還有一個優點就是很多資料庫高階連線特性都要求使用共享伺服器,所以有時候為了使用這些特性迫不得已只好設定為共享伺服器連線模式。共享伺服器的最大的缺點還是在於資料倉儲模式下執行的時候,如果有大量的請求需要長時間佔用伺服器,那麼就會造成很多別的請求的掛起,導致整個伺服器效能的降低。另外,在有些應用伺服器提供了連線池的時候,比如J2EE中經常有應用伺服器的連線池,比如Weblogic的啊,還有開源的DBCP以及C3P0等等。在有這些連線池的時候,共享伺服器對於效能上反而造成了累贅。另外,有時候在使用共享伺服器的時候,由於資料事務處理不及時,而佔住伺服器的程式試圖鎖定前面事務沒有處理的資料,會造成資料庫的死鎖,特別是如果沒有設定連線鎖定超時的話,只能透過DBA上資料庫殺程式的方式來解決了。不過也有這種的最佳方案,那就是混合模式,也就是對於同一個資料庫伺服器,既有專用伺服器,也有共享伺服器,共享伺服器用來處理那種事務性很強的活。而專用伺服器用來對付那些比較耗時間和資源的請求。當然,也要看到時候的實際情況如何再做決定,兩者沒有絕對的哪種好哪種不好的差別。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-1002665/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 專用伺服器連線與共享伺服器連線的概念和區別Oracle伺服器
- Oracle資料庫伺服器的兩種連線方式Oracle資料庫伺服器
- Oracle共享伺服器的連線模式Oracle伺服器模式
- 資料庫連線 系列一:laravel框架如何連線兩個資料庫(不同伺服器)資料庫Laravel框架伺服器
- SQLSERVER建立連線伺服器SQLServer伺服器
- ORACLE專用伺服器模式(DEDICATED)與共享伺服器模式(SHARE)的區別Oracle伺服器模式
- 【CONNECT】Oracle連線方式詳細介紹(專用/共享伺服器)Oracle伺服器
- sqlserver建立與Oracle的連結伺服器SQLServerOracle伺服器
- 用c#建立與資料庫的連線 c#連sqlserverC#資料庫SQLServer
- .Net與Oracle的資料庫連線Oracle資料庫
- 錯誤:無法與 SFTP 伺服器建立 FTP 連線FTP伺服器
- 【實驗】【Shared Server Mode】專有伺服器連線還是共享伺服器連線確認方法Server伺服器
- Java連線oracle資料庫的兩種常用方法JavaOracle資料庫
- 騰訊雲伺服器與雲mysql連線伺服器MySql
- 儲存與伺服器連線案例分享伺服器
- RMAN連線與oracle連線模式的關係Oracle模式
- 兩種方式建立sqlserver連結伺服器SQLServer伺服器
- 雲端計算運維學習---web伺服器和NFS伺服器、資料庫伺服器建立連線運維Web伺服器NFS資料庫
- 各種連線資料庫的連線字串資料庫字串
- SQL Server連線SQL Server、SQL Server連線ORACLE 連結伺服器SQLServerOracle伺服器
- 資料庫之學生連線伺服器問題資料庫伺服器
- SQLAlchemy - 資料庫的連線、建立會話與模型SQL資料庫會話模型
- 連線mysql伺服器MySql伺服器
- pycharm 連線伺服器PyCharm伺服器
- 電腦連線伺服器步驟 電腦如何連線伺服器?伺服器
- Oracle(+)連線與Join連線Oracle
- 自己的電腦怎麼連線伺服器 電腦如何連線伺服器伺服器
- 詳解Oracle的連線模式:專有模式和共享模式Oracle模式
- 連線雲伺服器軟體,連線雲伺服器軟體哪個好?其連線遠端伺服器的方法介紹伺服器
- 資料庫與python的連線資料庫Python
- 伺服器的連線情況?伺服器
- SqlServer跨伺服器連線SQLServer伺服器
- 使用ssh連線伺服器伺服器
- Oracle客戶端連線伺服器教程Oracle客戶端伺服器
- ORACLE 半連線與反連線Oracle
- 專用伺服器模式(MTS)和共享伺服器模式伺服器模式
- 連線MySQL資料庫的兩種方式介紹MySql資料庫
- Oracle專有(dedicated)連線和共享(shared)連線Oracle