目錄
正確認識SQL Server數據庫引擎
SQL Server數據庫引擎作爲MS SQL Server套件中的核心程序,主要包含如下4個組件:
- 協議(protocol layer)
- 關係引擎(relational engine,即查詢處理器query processor)
- 存儲引擎(storage engine)
- SQLOS
下圖截取自《Microsoft SQL Server 2012 Internals》-chapter1
我們可以在SQL Server Configuration Manager中查看當前SQL Server使用的網絡協議(需注意:下圖所示是2個SQL Server2008R2實例中MSSQLSERVER使用的網絡協議情況,協議VIA已在2012版本棄用):
從SQL Server2005開始SQL Server使用了新的SQL Server Network Interface(SNI)協議,在標準通訊協議TCP/IP與named pipes中封裝tabular data stream (TDS)進行網絡傳輸,替換了原來2000使用的Net-Libraries和 Microsoft Data Access Components (MDAC)。
其中SQL Server關係引擎主要包含了:查詢優化器(Query Optimizer)與查詢執行器(query execution)。這兩個組件是T-SQL語句調優的重點。
下圖截取自《Microsoft SQL Server 2012 Internals》-chapter11,顯示了查詢優化器的主要工作過程:
而SQL Server存儲引擎涉及了數據訪問與管理相關的所有組件。在SQL Server2008/2008R2/2012中,存儲引擎主要包含了3個部分: 訪問方法(access methods), 鎖與事務(locking and transaction services),實用工具命令(utility commands)
通常情況下,我們也認爲SQLOS屬於windows操作系統的一部分(在第二章將詳細描述SQLOS),因爲SQLOS通過windows API管理了內存、工作線程等操作系統資源。
參考資料
《Microsoft SQL Server 2012 Internals》 - chapter 1
Network Protocols and TDS Endpoints
https://technet.microsoft.com/en-us/library/ms191220%28v=sql.105%29.aspx
update by HyperWang at 2016/03/14