ftp无法与服务器建立连接_建立与Oracle数据库服务器连接的两种连接模式
建立與Oracle數(shù)據(jù)庫(kù)服務(wù)器連接的兩種連接模式(專(zhuān)用服務(wù)器與共享服務(wù)器)
在建立Oracle數(shù)據(jù)庫(kù)的時(shí)候,應(yīng)該會(huì)在數(shù)據(jù)庫(kù)建立助手向?qū)厦婵吹竭@么一個(gè)選項(xiàng),就是數(shù)據(jù)庫(kù)的連接模式采用什么方式。在Oracle9i或者10g中,可以看到有2種連接模式,一種叫做專(zhuān)用服務(wù)器連接(dedicated server) ,另外一種叫做共享服務(wù)器連接(shared server)。下面我們來(lái)分類(lèi)說(shuō)一下這兩種連接方式的不同點(diǎn)。
專(zhuān)用服務(wù)器模式就是說(shuō)每次在對(duì)Oracle進(jìn)行訪問(wèn)的時(shí)候,Oracle服務(wù)器的Listener會(huì)得到這個(gè)訪問(wèn)請(qǐng)求,然后回為這個(gè)訪問(wèn)創(chuàng)建一個(gè)新的進(jìn)程來(lái)進(jìn)行服務(wù)。所以說(shuō),對(duì)于每一個(gè)客戶端的訪問(wèn),都會(huì)生成一個(gè)新的進(jìn)程進(jìn)行服務(wù),是一種類(lèi)似一對(duì)一的映射關(guān)系。這種連接模式的一個(gè)很重要的特點(diǎn)就是UGA(用戶全局域)是存儲(chǔ)在PGA(進(jìn)程全局域)中的,這個(gè)特性也很好說(shuō)明了當(dāng)前用戶的內(nèi)存空間是按照進(jìn)程來(lái)進(jìn)行分配的。
而另外的共享服務(wù)器連接則是一種在程序編寫(xiě)的時(shí)候通常會(huì)用到的連接池(pool)的概念。采用這種模式的話,在數(shù)據(jù)庫(kù)的初始化的時(shí)候就會(huì)創(chuàng)建一批服務(wù)器連接的進(jìn)程,然后把這些連接進(jìn)程放入一個(gè)連接池來(lái)進(jìn)行管理。初始化的池中的進(jìn)程數(shù)量在數(shù)據(jù)庫(kù)初始化建立的時(shí)候是可以手動(dòng)設(shè)置的。在連接建立的時(shí)候,Listener首先接受到客戶端的建立連接的請(qǐng)求,然后Listener去生成一個(gè)叫做調(diào)度器(dipatcher)的進(jìn)程與客戶端進(jìn)行連接。調(diào)度器把把客戶端的請(qǐng)求放在SGA(系統(tǒng)全局域)的一個(gè)請(qǐng)求隊(duì)列中,然后再共享服務(wù)器連接池中查找有無(wú)空閑的連接,然后讓這個(gè)空閑的服務(wù)器進(jìn)行處理。處理完畢以后再把處理結(jié)果放在SGA的相應(yīng)隊(duì)列中。調(diào)度器通過(guò)查詢相應(yīng)隊(duì)列,得到返回結(jié)果,再返回給客戶端。這種連接模式的優(yōu)點(diǎn)在于服務(wù)器進(jìn)程的數(shù)量可以得到控制,不大可能出現(xiàn)因?yàn)檫B接人數(shù)過(guò)多而造成服務(wù)器內(nèi)存崩潰。但是由于增加了復(fù)雜度以及請(qǐng)求相應(yīng)隊(duì)列,可能性能上有所下降。
總之,談到兩種連接方式的優(yōu)點(diǎn)和缺點(diǎn),真的是各有千秋。在專(zhuān)用服務(wù)器模式下,優(yōu)點(diǎn)就是每個(gè)用戶都有一個(gè)連接,所以大家不至于有的應(yīng)用占著連接造成別的客戶的請(qǐng)求給掛起了。而最大的缺點(diǎn)在于內(nèi)存管理上,因?yàn)殡S著連接數(shù)的增加,每增加一個(gè)連接,就要分配一份PGA,如果增加10000個(gè)連接,那就是10000個(gè)PGA要提供,內(nèi)存很容易吃爆掉。而共享連接方式優(yōu)點(diǎn)在于連接數(shù)量固定,所以內(nèi)存數(shù)量不會(huì)占用很多,不過(guò)在數(shù)據(jù)庫(kù)初始化的時(shí)候,共享服務(wù)器就要初始化好,比如有100個(gè)共享服務(wù)器,由于共享連接模式下,UGA是分配在PGA中的,所以初始化的時(shí)候需要初始化比較多的內(nèi)存,也就是那100個(gè)UGA的內(nèi)存。另外共享服務(wù)器還有一個(gè)優(yōu)點(diǎn)就是很多數(shù)據(jù)庫(kù)高級(jí)連接特性都要求使用共享服務(wù)器,所以有時(shí)候?yàn)榱耸褂眠@些特性迫不得已只好設(shè)定為共享服務(wù)器連接模式。共享服務(wù)器的最大的缺點(diǎn)還是在于數(shù)據(jù)倉(cāng)庫(kù)模式下運(yùn)行的時(shí)候,如果有大量的請(qǐng)求需要長(zhǎng)時(shí)間占用服務(wù)器,那么就會(huì)造成很多別的請(qǐng)求的掛起,導(dǎo)致整個(gè)服務(wù)器性能的降低。另外,在有些應(yīng)用服務(wù)器提供了連接池的時(shí)候,比如J2EE中經(jīng)常有應(yīng)用服務(wù)器的連接池,比如Weblogic的啊,還有開(kāi)源的DBCP以及C3P0等等。在有這些連接池的時(shí)候,共享服務(wù)器對(duì)于性能上反而造成了累贅。另外,有時(shí)候在使用共享服務(wù)器的時(shí)候,由于數(shù)據(jù)事務(wù)處理不及時(shí),而占住服務(wù)器的進(jìn)程試圖鎖定前面事務(wù)沒(méi)有處理的數(shù)據(jù),會(huì)造成數(shù)據(jù)庫(kù)的死鎖,特別是如果沒(méi)有設(shè)定連接鎖定超時(shí)的話,只能通過(guò)DBA上數(shù)據(jù)庫(kù)殺進(jìn)程的方式來(lái)解決了。不過(guò)也有這種的最佳方案,那就是混合模式,也就是對(duì)于同一個(gè)數(shù)據(jù)庫(kù)服務(wù)器,既有專(zhuān)用服務(wù)器,也有共享服務(wù)器,共享服務(wù)器用來(lái)處理那種事務(wù)性很強(qiáng)的活。而專(zhuān)用服務(wù)器用來(lái)對(duì)付那些比較耗時(shí)間和資源的請(qǐng)求。當(dāng)然,也要看到時(shí)候的實(shí)際情況如何再做決定,兩者沒(méi)有絕對(duì)的哪種好哪種不好的差別。
數(shù)據(jù)灣:428140675
總結(jié)
以上是生活随笔為你收集整理的ftp无法与服务器建立连接_建立与Oracle数据库服务器连接的两种连接模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 局部钩子能防全局钩子吗_Django局部
- 下一篇: github 搜索_Fzf:Golang