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