程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server2008引擎組件教程

SQL Server2008引擎組件教程

編輯:關於SqlServer
 

首先讓我們先來看看SQL Server2008的引擎組件,SQLServer2008有四大組件:協議、關系引擎、存儲引擎和SQLOS。

一、協議層(Protocol Layer)

當一個應用程序與SQL Server數據庫引擎通訊時,協議層提供的應用程序編程接口利用微軟自定義的tabular data stream(TDS)package來規范通訊格式。這一層的意義在於向應用程序提供訪問SQL Server的接口。

SQL Server Network Interface(簡稱SNI)

SNI是在服務器和客戶端之間建立網絡連接的一種協議,他提供一組在數據庫引擎和SQL Server客戶端使用的API函數。SNI代替了SQL Server2000下的Net- Libraries組件和MDAC組件。

SQL Server支持共享內存(Shared memory)、TCP/IP、命名管道(Named Pipes)、虛擬接口適配器(Virtual Interface Adapter,即VIA)四種協議。

一旦建立連接,SNI就會向服務器的TDS斷點創建一條安全的連接,用來進行數據的請求和返回。

表格格式數據流端點(Tabular Data Stream,簡稱TDS)

TDS是一種微軟的與數據庫進行交互的私有協議,SQL Server在安裝時為其支持的四種協議各創建一個端點,如果協議被激活,那麼所有用戶均可以使用這個協議。此外還有一個專門為專用管理員連接(DAC)而設置的端點。

一條SQL語句則會通過TCP/IP連接以TDS消息的形式發送給SQL Server。

協議層(Protocol Layer)

一旦協議層接收到TDS包,就會在反轉和解包工作,以找到所包含的請求。協議層也負責打包結果和狀態消息,並以TDS消息的形式返回客戶端。

二、關系引擎(Relational Engine)

關系引擎又成為查詢處理器,包括用來確定某個查詢所要做的操作及進行這些操作最佳方式的SQL Server組件。同時關系引擎也負責向存儲引擎請求數據時查詢的執行,並處理返回的結果。

命令解析器(Cmd Parser)

命令解析器處理發送給SQL Server的T-SQL語言事件。它會先檢查T-SQL語法,並返回任何錯誤信息客戶端,如果語法有效,就會進一步產生執行計劃或者去查找一個已經存在的執行計劃。命令解析器通過T-SQL哈希值向位於緩沖池中的Plan Cache發出匹配要求,以檢查是否存在該執行計劃;如果不存在則把T-SQL翻譯成可以執行的內部格式,即查詢樹。

查詢優化器(Optimizer)

查詢優化器從命令解析器中獲取查詢樹,並為它的實際執行做准備。

生成執行計劃的第一步是對每個查詢進行規范化,規范化的過程有可能將單個查詢分解成多個粒度合適的查詢。然後進行最優化,SQL Server的查詢優化器是基於成本的,它會選擇它認為成本最低的執行計劃,它使用一些內部指標(內存需求、CPU利用率和I/O需求數目)作為選擇的依據。此外查詢優化器還會考慮請求語句的類型、檢查受到影響的各表的數據量、表中的索引,以及SQL Server統計數據。

SQL管理器

SQL管理器負責管理與存儲過程及其計劃有關的事務,並負責管理查詢的自動化參數。

數據庫管理器

數據庫管理器管理查詢編譯和查詢優化所需的對元數據的訪問。

查詢執行器(Query Executor)

查詢執行器運行查詢優化器生成的執行計劃,就像調度員負責調度執行計劃中的所有命令。

三、存儲引擎(Storage Engine)

存儲引擎包括存取方法、事務管理和緩沖區管理器。

存取方法(Access Methods)

SQL Server需要定位數據庫時,會調用存取方法代碼。它提供了一組代碼,用來創建和請求對數據頁面和索引頁面進行掃描,並且將准備好的OLE DB數據行集返回給關系引擎。存取方法並不真正進行操作,它只負責向緩沖區管理器發出請求。

事務管理器(Transaction Manager)

事務管理器包括兩個組件:日志管理器和鎖管理器。

鎖管理器負責數據的並發保護和基於特定隔離級別的管理。日志管理器負責將事務日志提前記錄於日志文件中,從而起到保護數據的作用。

緩沖區管理器(Buffer Manager)

緩沖區管理器用來管理緩沖區內存池中數據頁面的分布。  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved