|
偶爾被問(wèn)及數(shù)據(jù)庫(kù)的共享模式和專用模式的區(qū)別,有一些模糊,故做一下區(qū)別分析:
MTS(多線程服務(wù))和專用模式的區(qū)別是:
專用模式是 專用服務(wù)進(jìn)程為客戶端進(jìn)程做一對(duì)一處理,客戶進(jìn)程(不管什么程序連接到數(shù)據(jù)庫(kù))將直接在如TCP/IP套接詞這樣的一些網(wǎng)絡(luò)管道上,與專用服務(wù)器連接。數(shù)據(jù)緩沖池中查找數(shù)據(jù),處理sql。
MTS模式是 共享服務(wù)進(jìn)程 取代了 專用模式的 專用服務(wù)進(jìn)程 ?蛻暨M(jìn)程將首先由分配器dispatche進(jìn)程來(lái)分配 客戶端請(qǐng)求 到SGA中的 請(qǐng)求隊(duì)列,然后由 共享服務(wù)進(jìn)程來(lái)調(diào)出并處理,得出的結(jié)果(數(shù)據(jù),返回代碼等)響應(yīng) 被共享服務(wù)進(jìn)程放入到響應(yīng)對(duì)列,等待分配器進(jìn)程來(lái)傳送給客戶端進(jìn)程。
當(dāng)我們發(fā)布
sqlplus scott/tiger@tns
其中tns是TNS服務(wù)名稱,tns代表(transparent network substrate),它是內(nèi)建于oracle客戶端的‘平臺(tái)’軟件,它處理遠(yuǎn)程連接--允許對(duì)等通信。TNS連接串告訴oracle軟件如何連接到遠(yuǎn)程數(shù)據(jù)庫(kù)。一般來(lái)說(shuō),運(yùn)行在機(jī)器上的客戶端軟件將讀取tnsname.ora文件。
tns = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = jimmypeng)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = test) ) )
通過(guò)這個(gè)文件,客戶端軟件知道要連接誰(shuí),它將連接打開(kāi)1521端口的服務(wù)端jimmypeng的tcp/ip套接字連接。
服務(wù)端的net8配置好后,監(jiān)聽(tīng)器也在運(yùn)行,那么這個(gè)連接就可以接受了。服務(wù)端有個(gè)tns listener進(jìn)程開(kāi)啟,當(dāng)它接收到聯(lián)入的連接請(qǐng)求時(shí),負(fù)責(zé)檢查這個(gè)請(qǐng)求,使用自己的配置文件,檢查ip地址是否正確,或者是主機(jī)名是否正確,來(lái)判斷是否接受請(qǐng)求或者是拒絕請(qǐng)求,并使我們完成連接。
如果是專用模式,會(huì)由監(jiān)聽(tīng)進(jìn)程創(chuàng)建一個(gè)專用服務(wù)進(jìn)程,最后由服務(wù)器進(jìn)程接受客戶端的請(qǐng)求。監(jiān)聽(tīng)進(jìn)程與請(qǐng)求脫鉤 。
如果是多線程模式,監(jiān)聽(tīng)進(jìn)程的行為將不同,監(jiān)聽(tīng)器進(jìn)程知道我們?cè)跀?shù)據(jù)庫(kù)上的分配進(jìn)程dispatcher。當(dāng)接受到客戶端請(qǐng)求時(shí),監(jiān)聽(tīng)器從可用的分配器池中選擇一個(gè)分配進(jìn)程。監(jiān)聽(tīng)器把 對(duì)客戶端如何連接到分配器進(jìn)程的信息發(fā)送給客戶端。因?yàn)楸O(jiān)聽(tīng)器是在服務(wù)端的一個(gè)主機(jī)名和端口上運(yùn)行,所以必須做此事。但是分配器將接受主機(jī)上隨機(jī)分配的端口上的連接。監(jiān)聽(tīng)器知道這個(gè)隨機(jī)分配的端口,并選擇一個(gè)分配器?蛻舳巳缓笈c監(jiān)聽(tīng)器斷開(kāi)并直接連接到這個(gè)分配端口上的分配器。對(duì)數(shù)據(jù)庫(kù)就有了一個(gè)物理上的連接。
|
|
【收藏】【打印】【進(jìn)入論壇】 |
|
|
|
|
|
|
|