oracle 專用伺服器模式與共享伺服器模式詳解

2021-05-28 02:56:27 字數 4126 閱讀 8270

一、共享伺服器模式。

共享伺服器模式,也叫做多執行緒伺服器模式。在這種模式下,oracle資料庫允許多個使用者程序共享非常少的伺服器程序。所以,可以同時實現使用者併發訪問的人數也就大大的增加。

採用共享伺服器模式的話,則多個使用者可以共用乙個伺服器程序,也就是說,此時客戶端程序與伺服器程序是多對一的情況。這主要是通過排程程式來實現的。排程程式將多個加入資料庫訪問會話請求指引到乙個共用佇列。伺服器程序共享池中某個閒置的共享伺服器程序依次從佇列中獲得乙個請求。也就是說,乙個很小的伺服器程序共享池可以為大量的客戶機提供服務。

共享伺服器連線是一種在程式編寫的時候通常會用到的連線池(pool)的概念。採用這種模式的話,在資料庫的初始化的時候就會建立一批伺服器連線的程序,然後把這些連線程序放入乙個連線池來進行治理。初始化的池中的程序數量在資料庫初始化建立的時候是可以手動設定的。在連線建立的時候,listener首先接受到客戶端的建立連線的請求,然後listener去生成乙個叫做排程器(dipatcher)的程序與客戶端進行連線。排程器把把客戶端的請求放在sga(系統全域性域)的乙個請求佇列中,然後再共享伺服器連線池中查詢有無空閒的連線,然後讓這個空閒的伺服器進行處理。處理完畢以後再把處理結果放在sga的相應佇列中。排程器通過查詢相應佇列,得到返回結果,再返回給客戶端。這種連線模式的優點在於伺服器程序的數量可以得到控制,不大可能出現因為連線人數過多而造成伺服器記憶體崩潰。但是由於增加了複雜度以及請求相應佇列,可能性能上有所下降。

以下應用情景下,可以選擇採用共享伺服器模式

1、 前台客戶端數量比較多。

當大量使用者需要連線到資料庫並且需要有效的使用可用的系統資源的時候,則需要考慮採用共享伺服器模式。具體的來說,像現在採用的一些客戶端/伺服器端模式的網路應用軟體,如erp系統等等。一方面因為使用者人數比較多;另一方面企業由於資金有限,所以購置的是一般的伺服器。這些伺服器由於硬體方面的一些限制,如資料庫系統與前台應用伺服器採用統一臺伺服器。所以往往要求資料庫能夠充分使用硬體資源,以減少兩者之間的衝突。

2、 伺服器記憶體限制比較大。

共享伺服器模式下,當連線使用者增加時,其記憶體使用率增加不會很多。因為他們共享乙個伺服器程序。所以,從這乙個角度講,共享伺服器模式可以減少記憶體的使用。但在專用伺服器模式下,記憶體的使用幾乎與使用者的數量成比例增加。

所以,使用者若在一些老的伺服器上部署oracle資料庫的話,因為其主機板對記憶體的公升級有所限制,所以,為了得到乙個不錯的資料庫效能,往往採用共享伺服器模式。如此,即時同時訪問資料庫的使用者有所增加,其記憶體也不會有多大的影響。可以大大的降低記憶體的壓力。

3、 某些特定功能要求採用共享伺服器模式。

雖然說,共享伺服器模式與專用伺服器模式在大部分情況下,都是通用的,支援oracle資料庫系統的大部分功能。但是,某一些特定的功能,仍然需要資料庫管理員在共享伺服器模式下,才能夠啟用。比較典型的,如oracle資料庫伺服器的連線共享、連線集中與負載均衡技術等等。他們必須在共享模式下才能夠執行。

負載均衡用來在群集環境下實現多機共享資料庫,以保證應用的高可用性。同時可以自動實現並行處理以及均分負載,還能夠實現資料庫在故障時的容錯和無斷點恢復。所以,在一些對於效能與穩定性要求比較高的應用場景中,如銀行中,往往都會採用負載均衡技術。此時,資料庫管理員在配置資料庫的時候,就需要考慮採用共享伺服器模式。

二、專用伺服器模式。

專用伺服器模式就是說每次在對oracle進行訪問的時候,oracle伺服器的listener會得到這個訪問請求,然後回為這個訪問建立乙個新的程序來進行服務。所以說,對於每乙個客戶端的訪問,都會生成乙個新的程序進行服務,是一種類似一對一的對映關係。這種連線模式的乙個很重要的特點就是uga(使用者全域性域)是儲存在pga(程序全域性域)中的,這個特性也很好說明了當前使用者的記憶體空間是按照程序來進行分配的。

在專用伺服器模式下,資料庫伺服器要求每個使用者擁有乙個專用伺服器程序。也就是說,每個伺服器擁有乙個伺服器程序。資料庫伺服器把現有的伺服器程序地質發回客戶機,然後客戶機將連線請求重新傳送到提供的伺服器地質,與專用伺服器比較。專用伺服器模式由於客戶端與伺服器端程序是一一對應的,所以,其效能上可能會比較有優勢。但是,當使用者比較多的時候,則其對伺服器的硬體資源,特別是記憶體,會產生比較大的壓力。

符合如下特徵的話,採用專用年伺服器模式能夠取得比較好的效果

1、 只有少數客戶端。

若連線到資料庫的使用者比較少,則專用伺服器模式是首選。如企業前台是乙個財務管理系統,則其使用的人數就會比較少。因為其往往只涉及到乙個部門。但是,其資料量會比較多。因為我們知道,對於每一筆交易都需要在財務系統中進行詳細的紀錄。所以,雖然只是財務乙個部門用,但是其紀錄量往往是其他各個部門紀錄量的總合。在紀錄量多、連線使用者又比較少的情況下,採用專用伺服器模式,可以說是比較明智的選擇。

2、 為資料倉儲搭建的資料庫系統。

資料倉儲是資料庫技術的乙個非常典型的應用。他是乙個面向主體、整合、時變、非易失的資料集和,是支援管理部門的決策過程。他跟oracle資料庫一樣,都是關係型資料庫,其中的紀錄以**的方式儲存,並且能夠用統一的結構化語言進行資料查詢。採用資料倉儲的主要目的,是為了及時完成業務處理,及時給與客戶響應。

雖然說,關聯式資料庫能夠適應大型資料庫應用的需要,但是,不能夠將其簡單的堆砌就直接成為資料倉儲來使用。因為資料倉儲主要用來處理多維資料。他儲存紀錄的方式跟普通的有所不同。資料倉儲主要通過陣列方式來儲存紀錄,即沒有統一的規律可循,也沒有統一的多維模型可循,他只恩能夠購按其所屬類別進行歸類。雖然說傳統的二維資料庫不能夠簡單的堆砌來成為資料倉儲。但是,在設計資料倉儲的時候,並不是說要完全另起爐灶,而是可以利用現有的oracle資料庫系統來處理資料,從中進行資訊的綜合,從而構造出滿足不同需要的資料倉儲。

所以,如果這個資料庫是為了實現資料倉儲而搭建的,則必須要採用專用伺服器模式。這是oracle資料庫的強制要求。

3、 聯機事務處理系統。

聯機事務處理系統,英文簡稱為oltp。在這種應用下,採用什麼模式為好呢?這在業界,沒有統一的標準。有的說因為聯機事務處理系統使用人數比較多,應該採用共享連線伺服器模式;而有的又說聯機處理系統對於及時性要求比較高,而共享伺服器模式可能會有比較長的等待時間,所以應該採用專用連線伺服器模式。筆者是比較傾向於後面這種意見。

聯機事務處理系統,通常來說,有比較多的長事務與大事務。如使用者的某幾個操,必須作為乙個事務處理等的觀念。此時,若使用者請求數大於共享伺服器程序數的話,此時,就會發生排隊現象。假設現在有乙個共享伺服器程序正在執行乙個長事務,那麼請求佇列就需要一直等。直道這個事務完成為止。若從客戶端的角度來講,則客戶請求的響應時間就加長了。所以,當使用者的連線請求數比共享程序要多時,那麼長事務的共享連線必將會造成共享程序的排隊。事務越長,其排隊的時間也就越長,使用者響應的時間也就越長。如此惡性迴圈下去的話,很多聯機事務作業都會受到不同程度的影響。所以,若聯機事務處理系統統是符合兩個條件(使用者連線請求數大於共享程序並且其事務大部分是長事務或者大事務),則採用專用伺服器連線模式比採用共享伺服器連線模式效率要高。為了保障聯機事務處理系統正常執行,筆者建議資料庫管理員為其配置專用伺服器連線模式。

總之,談到兩種連線方式的優點和缺點,真的是各有千秋。在專用伺服器模式下,優點就是每個使用者都有乙個連線,所以大家不至於有的應用佔著連線造成別的客戶的請求給掛起了。而最大的缺點在於記憶體治理上,因為隨著連線數的增加,每增加乙個連線,就要分配乙份pga,假如增加10000個連線,那就是10000個pga要提供,記憶體很輕易吃爆掉。而共享連線方式優點在於連線數量固定,所以記憶體數量不會占用很多,不過在資料庫初始化的時候,共享伺服器就要初始化好,比如有100個共享伺服器,由於共享連線模式下,uga是分配在pga中的,所以初始化的時候需要初始化比較多的記憶體,也就是那100個uga的記憶體。另外共享伺服器還有乙個優點就是很多資料庫高階連線特性都要求使用共享伺服器,所以有時候為了使用這些特性迫不得已只好設定為共享伺服器連線模式。共享伺服器的最大的缺點還是在於資料倉儲模式下執行的時候,假如有大量的請求需要長時間占用伺服器,那麼就會造成很多別的請求的掛起,導致整個伺服器效能的降低。另外,在有些應用伺服器提供了連線池的時候,比如j2ee中經常有應用伺服器的連線池,比如weblogic的啊,還有開源的dbcp以及c3p0等等。在有這些連線池的時候,共享伺服器對於效能上反而造成了累贅。另外,有時候在使用共享伺服器的時候,由於資料事務處理不及時,而佔住伺服器的程序試圖鎖定前面事務沒有處理的資料,會造成資料庫的死鎖,非凡是假如沒有設定連線鎖定超時的話,只能通過dba上資料庫殺程序的方式來解決了。不過也有這種的最佳方案,那就是混合模式,也就是對於同乙個資料庫伺服器,既有專用伺服器,也有共享伺服器,共享伺服器用來處理那種事務性很強的活。而專用伺服器用來對付那些比較耗時間和資源的請求。當然,也要看到時候的實際情況如何再做決定,兩者沒有絕對的哪種好哪種不好的差別。

oracle專用伺服器模式與共享伺服器模式

一 共享伺服器模式。共享伺服器模式,也叫做多執行緒伺服器模式。在這種模式下,oracle資料庫允許多個使用者程序共享非常少的伺服器程序。所以,可以同時實現使用者併發訪問的人數也就大大的增加。如果使用專用伺服器模式,則每個使用者連線資料庫時,每個使用者程序需要他自己的專用伺服器程序。也就是說,客戶端程...

oracle 專用伺服器模式與共享伺服器模式詳解

一 共享伺服器模式。共享伺服器模式,也叫做多執行緒伺服器模式。在這種模式下,oracle資料庫允許多個使用者程序共享非常少的伺服器程序。所以,可以同時實現使用者併發訪問的人數也就大大的增加。採用共享伺服器模式的話,則多個使用者可以共用乙個伺服器程序,也就是說,此時客戶端程序與伺服器程序是多對一的情況...

Oracle專用伺服器與共享伺服器的區別

oracle專用伺服器與共享伺服器的區別 在建立oracle資料庫的時候,應該會在資料庫建立助手嚮導上面看到這麼乙個選項,就是資料庫的連線模式採用什麼方式。在oracle9i或者10g中,可以看到有2種連線模式,一種叫做 專用伺服器連線 dedicated server 另外一種叫做 共享伺服器連線...