Oracle專有(dedicated)連線和共享(shared)連線
專有連線 --- 客戶端的使用者程式和伺服器程式一一對應,使用者程式不直接訪問資料庫,而是將請求發給伺服器程式,讓伺服器程式執行具體的命令並返回結果。 這個連線用於專門處理該客戶端的所有請求,直到使用者主動斷開連線或網路出現中斷。在連線處於空閒時,後臺程式PMON會每隔一段時間,測試使用者連線狀況,如果連線已斷開,PMON會清理現場,釋放相關的資源。 專用連線相當於一對一的連線,能夠快速的響應使用者的請求。當然,在連線的時候,首先要建立PGA(Program global area)。因為是專有,所以如果併發非常多,要求的記憶體大小也不少。
在專用連線中,連線所需要的資源全部在PGA中分配。該記憶體區為指定連線私有,其它程式不能訪問。 專用連線採用一對一的連線方式,能很快的響應使用者的請求,但是,如果連線使用者太多時,由於要對每一個連線分配資源,因此,連線數受硬體限制比較大
共享連線 --- 為了克服以上硬體資源的問題,Oracle 提出了共享連線的連線方法,即用一個伺服器的程式響應多個使用者連線,與專用連線有連線時才建立PGA不同,共享連線在例項一啟動,就分配指定數量的伺服器程式,所使用者的連線,以排隊的方式,由分配器指定給伺服器程式,其它的程式排隊等待。只要使用者的請求一執行完,就會馬上斷開連線,分配器會把空閒的伺服器程式分配給其它排除的程式。
採用共享連線可以有效的提高伺服器資源的利用率,但是對一個分配器,只支援一種協議,每個分配器有自已的排隊佇列,在請求的任務完成後,由分配器將操作結果返回給相應的使用者程式。但是共享連線的建立, 需要Oracle的監聽程式、分配器、共享伺服器程式才能共同完成一個連線的建立,所以連線的分配也需要一定的時間和資源。
在共享連線中,sort_area_size 將在 SGA 的 Large_pool 中分配。
上面所說的是兩種連線的建立方法和管理方法,在理想的情況下,對於長事務或大事務,使用專用連線,可以有效的提高系統的效能,減少使用者等待和事務的排隊,提高系統的利用率。對於超短事務和短事務、小事務,使用共享連線方式,可以在資源與效率之間達到一種平稀。比如對於OLTP 系統,使用專用連線,而對於網站等,可以使用共享連線。
那麼,能不能在OLTP系統中使用共享連線呢?如果能使用,那麼,能不能提高效能呢?
OLTP系統,一般而言,有較多的長事務和大事務,如使用者的某幾步操作,必須作為一個事務。對於這種情況,我們分析一下,看看,會發生什麼樣的情況:
分析首先有一個前提,那就是使用者請求數要大於共享伺服器程式數,否則,減去分配器管理效能支出,共享連線的效能要低於專用連線。
如果使用者請求數大於共享伺服器程式數,那麼肯定有請求是在排隊,假定目前一個共享伺服器程式正在執行一個長事務,那麼請求佇列就要一直等,直到當前的事務結束。從使用者請求的角度看,很明顯,響應的時間加長了。從伺服器角度看,我們先看一下由網友 WESTLIFE_XU 提供的例項:
共享連線和長事務是背道而馳的,長事務的共享連線會造成shared 程式的嚴重排隊,造成效能的嚴重下降,給你看一個極端的例子,以前的同事公司的。
舉個例子,200個request共享比說10個共享程式,每個shared程式在一個時間內只能處理一個request,也就是說10個程式在同一時間內只能處理10個request,如果一個request需要很長的處理,會造成其它請求的嚴重排隊。
shared程式要求客戶端的每個request要特別快,如果客戶端的一個request就佔了很長時間,那別的request就得一直等著,共享就沒有什麼意義了。
從上面可以看出,如果在有大事務和長事務的OLTP系統中,系統會比原來更慢!
綜合來看,共享連線和專用連線各有所長,關鍵是看應用,能適用於自已應用的連線方式,就是好方式。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-676634/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 詳解Oracle的連線模式:專有模式和共享模式Oracle模式
- dedicated server連線測試Server
- 【實驗】【Shared Server Mode】專有伺服器連線還是共享伺服器連線確認方法Server伺服器
- oracle 專用伺服器連線與共享伺服器連線的概念和區別Oracle伺服器
- Oracle的左連線和右連線Oracle
- 連線和半連線
- Oracle(+)連線與Join連線Oracle
- Oracle左連線,右連線Oracle
- Oracle 專用模式(DEDICATED) 和 共享模式(SHARE)Oracle模式
- LAN連線和WAN連線有什麼區別?
- Oracle共享伺服器的連線模式Oracle伺服器模式
- Socket連線和Http連線HTTP
- 長連線和短連線
- 左連線和右連線
- ORACLE 半連線與反連線Oracle
- Oracle內連線、外連線、右外連線、全外連線小總結Oracle
- Oracle 表連線方式詳解(外連結、內連線、自連線)Oracle
- Internet連線共享(轉)
- sql 內連線和外連線SQL
- 【SQL】Oracle的內連線、左外連線、右外連線及全外連線SQLOracle
- 深入淺出SQL之左連線、右連線和全連線SQL
- 長連線和短連線的使用
- 連線池和連線數詳解
- http的長連線和短連線HTTP
- LINUX 硬連線和軟連線Linux
- Oracle左外連線、右外連線、完全外連線以及(+)號用法Oracle
- Oracle 左外連線、右外連線、全外連線小總結Oracle
- 內連線、左連線、右連線
- PHP 連線 OraclePHPOracle
- Servlet連線OracleServletOracle
- PHP 連線oraclePHPOracle
- jdbc連線oracleJDBCOracle
- sqlserver連線oracleSQLServerOracle
- mysql 連線oracleMySqlOracle
- navicat 連線 oracleOracle
- Oracle 表連線Oracle
- SQLSERVER 連線 ORACLESQLServerOracle
- ruby連線OracleOracle