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