SQL Server 2005架构
SQL Server 2005架構
轉載自:http://blog.csdn.net/motian_shi/article/details/4071616
SQL Server 2005由協議層、關系引擎、存儲引擎以及SQL OS四層組成。
協議層主要負責接收和傳送SQL Server服務器端和客戶端之間的消息,同是也要負責將這些消息轉換成下一層可以理解的格式。
關系引擎也可以被稱為查詢處理器,主要負責接收SQL批處理請求,并且決定如何執行批處理中的命令,一般都包括了分析、編譯以及優化T-SQL語句,可能還包括批處理執行監控。
存儲引擎負責所有的數據訪問,包括基于事務的命令語句、數據塊操作(例如備份、Bulk Insert以及某些DBCC命令)。
SQL OS負責處理那些與底層操作系統任務相關的事情,例如線程調度、同步機制、死鎖檢測、內存及緩存管理。
SQL Server 2005提供了一種新的工具幫助用戶了解這四層的工作狀態——動態管理視圖和動態管理函數:
dm_exec_*:通常都提供與用戶代碼執行以及相關鏈接的信息。
dm_os_*:提供較為底層的系統信息,例如內存、鎖以及調度等。
dm_tran_*:提供當前事務的相關信息。
dm_io_*:提供與網絡和磁盤輸入輸出相關的統計信息。
dm_db_*:提供數據庫及數據庫對象的相關信息。
協議層
應用程序客戶端與SQL Server服務器通訊時,由協議層負責建立正確的應用層連接,并對通訊數據包進行封裝和解封裝。SQL Server通訊用的應用層數據單元格式是Tabular Data Stream(表式數據流)。SQL Server支持的通訊協議有:
共享內存:這種協議僅適用于本機連接,因此通常都用于其它協議連接故障的時候進行本地排錯使用。MDAC 2.8或更早版本的客戶端不能使用這一協議,而只能使用命名管道。
命名管道:這種協議是在兩個進程間共用一個內存區域進行數據交換,因此一個進程的輸出就成為另外一個進程的輸入,這種協議支持本地訪問和網絡訪問。
TCP/IP:這是最常用的協議了。
虛擬接口適配器(VIA):這一協議用于VIA體系的硬件。
SQL Server 2005推出了一個新的連接概念,那就是TDS端點(TDS Endpoint)。在安裝過程中,SQL Server就會為每一種協議建立一個TDS Endpoint,因此就是四個TDS端點,不過這四個端點中只有共享內存默認是啟用的,另外三個端點需要手動啟動。特別需要指出的是,啟用TCP/IP 協議斷點的時候,還要選擇啟用哪些Socket地址,因為TCP/IP協議地址啟動后,所有Socket地址其實還沒有啟用,這是很多朋友常問的一個問 題。
?????
關系引擎(查詢處理器)
?SQL Server的關系引擎也被稱為查詢處理器,它的主要作用是理解我們提交的T-SQL語句并確定如何執行。關系引擎由一些列的組件組成,其中有一些組件可以說是整個SQL Server中最為復雜的組件。關系引擎中常見的組件包括:
命令分析器(Command Parse):分析器檢查我們提交的命令語法格式是否正確,然后將這些命令翻譯成內部格式——查詢樹。
查詢優化器(Query Optimizer):優化器接收查詢樹,對查詢樹進行標準化,然后根據SQL Server以及命令相關對象的內部信息決定如何執行,最后生成執行計劃。
SQL管理器(SQL Manager):SQL管理器負責管理存儲過程及其執行計劃(比如說是否要有編譯執行計劃、需要重編譯或可以復用現有的計劃),同時SQL管理器也負責對即席T-SQL查詢進行參數化。
數據庫管理器(Database Manager):數據庫管理器負責為查詢編譯及優化模塊訪問數據庫的元數據。
查詢執行器(Query Executor):執行器負責執行計劃的運行,因為通常T-SQL命令都會需要與存儲引擎進行交互,例如修改或訪問數據、管理事務一致性以及鎖管理。
存儲引擎
存儲引擎的主要任務管理數據訪問,但是SQL Server把一部分組件劃分到了SQL OS層。據《Inside SQL Server 2005: Storage Engine》一書的作者說,在微軟SQL Server存儲引擎小組主要負責三部分內容:Access Methods、Transaction Management以及SQL OS。
訪問方法管理器(Access Methods Managers):訪問方法管理器負責選擇合適的代碼定位數據,掃描數據頁和索引頁,準備OLEDB行集并將行集返回給關系引擎。SQL Server 2005包括的訪問方法有:
行操作(Row Operations)負責對單行數據操作(獲取或修改一行數據某一列的值)
索引操作(Index Operations)則負責維護和訪問B樹結構的索引數據
頁分配(Page Allocations)負責跟蹤和維護8種類型磁盤頁(數據頁、LOB頁、索引頁、PFS頁、GAM頁、SGAM頁、IAM頁、BCM頁和DCM頁)
SQL Server 2005新增的版本操作(Version Operations),支持SQL Server 2005維護數據的老版本,SQL Server 2005種的版本功能用于支持快照隔離、在線索引操作。
緩存管理器(Buffer Manager):數據訪問管理器的訪問方法代碼雖然管理數據頁面的訪問訪問,但是它們卻不會實際接觸數據頁面,所有數據頁面的訪問管理是由緩存管理器管 理的。緩存管理器負責確定那些數據頁面需要調入緩存(緩存管理器使用一個特殊的時鐘算法機制來管理緩存頁面的老化),而哪些可以需要被寫入數據磁盤 (Flush Disk)。
事務服務(Transaction Services):事務服務負責確定本地事務之間的順序和嵌套關系,當需要分布式事務的時候負責與MS-DTC服務交互。SQL Server 2005為了確保事務的一致性支持兩種并發控制模型:樂觀并發控制(基于數據版本)和悲觀并發控制(基于數據鎖)。SQL Server 2005有5種事務隔離級別,其中未提交讀、可重復讀和串行讀僅支持悲觀并發控制,新的快照隔離僅支持樂觀并發控制,而默認的提交讀則同時支持悲觀并發控 制和樂觀并發控制。
鎖管理器(Lock Manager):鎖管理器為應用代碼獲取和管理各種類型的鎖,例如用于讀的共享鎖、用于修改的排他鎖、用于潛在訪問的意向鎖、用于分配磁盤空間的擴展 鎖、用于維護元數據的架構鎖。盡管SQL Server 2005支持新的快照隔離級別,但是在這種隔離級別下面仍然需要鎖機制,因為快照隔離僅僅能夠保證讀進程和寫進程互相不影響,但為了確保數據的一致性仍然 需要在兩個或更多的寫進程之間使用鎖來確保數據一致性。
SQL OS
SQL OS負責管理與操作系統交互的一系列操作,例如內存管理、線程調度、同步管理、磁盤IO等。
用戶模式調度(User Mode Scheduler UMS):用戶模式調度主要負責SQL Server作業間的處理器資源調度,從SQL Server 7.0開始可以使用纖程(Fiber,在Windows NT 4.0被發布的一項技術,用于提供線程中各細粒度的資源分割,主要針對SQL Server和Exchange Server之類的高并發系統的調度)。SQL Server中將調度程序稱為用戶模式調度(UMS)的原因是這一調度程序主要運行在用戶模式中。SQL Server 2005中的調度被稱為SQL Server操作系統(SQL Server Operating System——SOS)調度,比UMS要更為先進。
SQL Server調度程序(Schedulers):在SQL Server服務啟動時會為每個CPU創建一個對應的調度程序,然后根據SQL Server的處理器親和度掩碼選項值(Affinity Mask)設置對應調度程序的狀態為聯機(ONLINE)或脫機(OFFLINE)。對于某些特殊的環境,用戶的服務器有比較多的CPU以及多個實例(比 如16顆CPU和4個實例),我們可以通過親和度掩碼將每個實例綁定到指定的4顆CPU(實例1為15,實例2為240,實例3為3840,實例4為 170000,這四個掩碼的二進制分別是0000000000001111,0000000011110000,0000111100000000和 1111000000000000)。這樣設置后不僅每個實例都綁定到了指定的4顆CPU,同時每個實例中的調度程序也被綁定到了4顆CPU的某一顆 CPU,如果用戶僅僅需要綁定實例到CPU,但是不希望實例內的調度程序也綁定到CPU上,則可以設置SQL Server的啟動跟蹤標記8002。
SQL Server工作程序(Workers):一個工作程序實際上就是與某個調度程序綁定的線程或纖程,工作程序在某個調度程序接受到處理請求的時候被創建, 因此如果調度程序通過處理器親和度選項與實際的物理處理器進行了綁定,那么工作程序在創建后實際上也是和物理處理器綁定的。(這就是我們說為什么通過設置 處理器親和度可以提高處理器的緩存命中率)
SQL Server作業(Tasks):可以等同理解SQL Server作業為一個SQL Server的批(Batch)。SQL Server收到一個請求時會將該請求分配到某個SQL Server工作程序上,在完成分配的請求前這一工作程序將不能處理其他請求(比如說被分配的請求需要等待一個IO的完成確認,或者需要等待一個排他鎖的 釋放等等)。
相關文章
SQL Server 2012架構:http://www.go4expert.com/articles/sql-server-2012-architecture-t34067/
轉載于:https://blog.51cto.com/ultrasql/1792473
總結
以上是生活随笔為你收集整理的SQL Server 2005架构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IOS开发笔记(Swift):UITab
- 下一篇: 删除百度云右键菜单