国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SQL Server 2012:SQL Server體系結構——一個查詢的生命周期(第1部分)

2024-08-31 00:54:34
字體:
來源:轉載
供稿:網友
SQL Server 2012:SQL Server體系結構——一個查詢的生命周期(第1部分)

為了縮小讀取操作所涉及范圍,本文首先著眼于簡單的SELECT查詢,然后引入執行更新操作有關的附加過程。最后你會讀到,優化性能時SQLServer使用還原工具的相關術語和流程。

關系和存儲引擎

如圖所示,SQL Server被分為2個主要引擎:關系引擎存儲引擎關系引擎有時也被稱為查詢處理器,因為它的主要功能是查詢優化和執行。它包含檢查查詢語法和準備查詢樹的命令解析器查詢優化器毫無疑問是任何數據庫系統中皇冠上的寶石;查詢執行器對執行(查詢計劃)負責。

存儲引擎對所有數據輸入、輸出管理負責。它包含用來處理行、索引、頁、分配和行版本等修改的輸入、輸出請求的存取方法緩存區管理器,與SQL Server主要內存用戶緩沖池打交道。它還包含處理用來維持一致性(ACID)的數據鎖和管理事務日志的事務管理器

緩沖池

在進入查詢生命周期之前你需要知道的其它主要組件是緩沖池,在SQL Server中是最大的內存用戶。緩沖池里包含SQL Server中的所有不同緩存,包括計劃緩存和數據緩存,計劃緩存會接在透過它生命周期的查詢后的章節談到。

一個簡單的SELECT查詢

在這個例子中,使用的查詢細節不重要——沒有join的簡單SELECT語句,因為你只是發起一起簡單的讀取請求。從客戶端開始,那里你首先接觸的組件是SQL Server網絡接口(SNI)。

SQL Server網絡接口(SNI)

SQL Server網絡接口(SNI)是建立客戶端和服務器端網絡連接的協議層。它由數據庫引擎和SQL Server本地客戶(SQL Server Native Client:SNAC)都用到的一系列API組成。SNI代表在SQL Server 2000里建立的網絡庫和包含在操作系統里的微軟數據訪問組件(Microsoft Data access Components:MDAC)。

SNI不是被直接配置的;你要配置在客戶端和服務器端的網絡協議。SQL Server支持下列協議:

  • 共享內存(Shared memory)——簡單、快速,共享內存是用來連接本地(與SQL Server一樣的計算機)運行客戶端的默認協議。只能用在本地,沒有配置屬性,當從本地機器連接時始終是首次嘗試的。
  • TCP/ip——這是最常用于SQL Server的訪問協議。它通過指定IP地址和端口號使你可以連接到SQL Server。通常,當你指定一個連接實例時它會自動發生。你的內部命名解析系統解析實例名的主機名為IP地址,不管你為默認實例連接到默認TCP 1433端口還是用SQL瀏覽服務為命名實例使用UDP 1434找到正確的端口。
  • 命名管道(Named Pipes)——TCP/IP和命名管道(Named Pipes)是在架構里被使用的兼容協議。命名管道(Named Pipes)被開發來用于局域網(LANs),但也可以被不高效的用于低速網絡,例如廣域網(WANs)。

使用命名管道(Named Pipes)首先需要在為SQL Server配置管理器(SQL Server Configuration Manager)使它生效(如果你要遠程連接的話),然后創建一個使用命名管道(Named Pipes)作為協議連接到服務器的SQL Server別名。

命名管道(Named Pipes)使用TCP 445端口,在2個電腦間的任何防火墻里請確保這個端口被打開,包括Windows防火墻。

  • VIA——虛擬接口適配器(Virtual Interface Adapter:VIA)是兩個系統間高性能通訊的協議,它需要在終端和專門連接口都要有特制硬件。

與命名管道(Named Pipes)一樣,使用VIA協議首先需要在為SQL Server配置管理器(SQL Server Configuration Manager)使它生效,然后創建一個使用虛擬接口適配器(Virtual Interface Adapter:VIA)作為協議連接到服務器的SQL Server別名.雖然SQL Server 2012還支持VIA協議,從以后的版本開始它會被移除,因為新安裝時需要避免這個協議被安裝。

不管使用哪種協議,一旦連接被建立,SQL Server網絡接口(SNI)在服務器上與表格數據流(TDS)終結點(下面會介紹)創建一個完全連接,用它來發送請求和接收數據。這里追隨透過它生命周期的查詢的目的是,你發送SELECT語句且在等待接收結果集。

表格數據流終結點(Tabular Data Stream(TDS) Endpoints)

TDS是微軟所有最先由Sybase設計用來與數據庫服務器交互的協議。使用例如TCP/IP的網絡協議一旦連接被接通,與相關TDS終結點的聯系會被創建,它在客戶端與服務器端之間擔當著通信點。

每個網絡協議都有一個TDS終結點,并且還有一個會被專用網絡連接(dedicated administrator connection:DAC)使用。一旦連通性被創建,TDS消息會被用做客戶端與服務器端間的溝通。

SELECT語句是穿過TCP/IP協議(TCP/IP是默認協議)作為TDS消息發送給SQL Server。

協議層(PRotocal Layer)

當SQL Server中的協議層(Protocal Layer)收到你的TDS包,它會倒轉SQL Server網絡接口(SNI)的工作,把包拆開找出里面包含的請求是什么。協議層(Protocal Layer)同樣對把結果和狀態消息打包并作為TDS消息發回給客戶端負責。

我們的SELECT語句在TDS包里標記為”SQL命令“類型的消息,因為它傳給下一個組件,命令分析器(Command Parser),開始走向執行的道路。

上圖顯示了我們的查詢現在到哪里了。在客戶端,語句被SQL Server網絡接口(SNI)打包在TDS包里并發送給SQL Server中的協議層(Protocal Layer),在那里被拆包,識別為SQL命令,這個代碼被SQL Server網絡接口(SNI)發送給命令解析器(Command Parser)。

命令分析器(Command Parser)

命令分析器(Comamnd Parser)的角色是處理T-SQL語言事件(language events)。它首先檢查語法并通過協議層(protocol layer)返回給客戶端任何語法錯誤。如果語法是有效的,然后下一步就是生成查詢計劃(query plan)或查找已存在的計劃。查詢計劃(query plan)包含SQL Server將如何去執行這段代碼的細節。它通常被稱為執行計劃(execution plan)。

為了檢查查詢計劃(query plan),命令分析器(Comamnd Parser)會生成T-SQL的散列(hash)并核對計劃緩存(plan cache)來決定是否有合適的計劃已經存在。計劃緩存(plan cache)是在緩沖池(buffer pool)里用來緩存查詢計劃(query plan)的區域。如果找到匹配的,從緩存里這個計劃會被讀取并傳給查詢執行器(Query Executor)去執行。(下一篇將介紹如果沒有找到匹配會發生什么。)


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 芜湖县| 罗源县| 石门县| 信丰县| 团风县| 文安县| 正蓝旗| 宽甸| 西畴县| 古交市| 张家港市| 安西县| 长阳| 高要市| 盖州市| 历史| 扎兰屯市| 邳州市| 井陉县| 英吉沙县| 吉木萨尔县| 东乡族自治县| 江山市| 项城市| 肇源县| 遵义市| 安泽县| 玉屏| 宁乡县| 秦安县| 洮南市| 丰台区| 万荣县| 巴彦淖尔市| 大名县| 新龙县| 阿巴嘎旗| 商城县| 民勤县| 洛宁县| 汤原县|