引言
Microsoft® SQL® Server
版是 Microsoft 數據庫產品的定義版本
它建立在 Microsoft SQL Server
版所確立的堅實基礎之上
用戶的需要和要求推動了 SQL Server
中重大的產品創新
作為 Microsoft Windows® 操作系統系列產品最佳的關系數據庫管理系統 (RDBMS)
SQL Server 是各個領域的公司用戶和獨立軟件商 (ISV) 的正確選擇
本文對 SQL Server 查詢處理器中的創新和改進進行了描述
SQL Server 查詢處理器是數據庫服務器中接受 SQL 語法
確定如何執行該語法以及執行選擇的計劃的部分
與其它商業上可用的 RDBMS 產品相比
SQL Server
是重大創新的源泉
在簡要介紹查詢處理器作用
類型及查詢處理組件之後
將討論以下主題
Microsoft SQL Server
的目標
查詢執行
查詢優化
分布式查詢
處理查詢
有關詳細信息
請參見
存儲引擎
白皮書(文檔編號
)
英文網址為
關系數據庫由許多部分組成
但是在它的核心部分有兩個主要組件
存儲引擎
和
查詢處理器
存儲引擎將數據寫入磁盤
並從磁盤讀取數據
它管理記錄
控制並發性
並維護日志文件
查詢處理器接受 SQL 語法
確定如何執行該語法
並執行選擇的計劃
用戶或程序與查詢處理器交互
而查詢處理器與存儲引擎交互
注意
查詢處理器將用戶與執行的詳細情況隔離開
用戶決定結果
查詢處理器確定該結果是如何獲得的
查詢處理有兩個主要階段
查詢優化
和
查詢執行
查詢優化是選擇執行得最快的計劃的過程
在優化階段
查詢處理器選擇
如果有索引的話
使用哪些索引
執行聯接的順序
類似 WHERE 子句的約束的應用順序
根據從統計數據導出的成本核算信息
采用哪些算法有望達到最佳性能
查詢執行是執行在查詢優化過程中所選擇的計劃的過程
查詢執行組件還確定查詢優化器可用的技術
例如
SQL Server 既實現哈希聯接算法
也實現和合並聯接算法
兩種都是查詢優化器的可用算法
查詢優化器是關系數據庫系統的大腦
盡管幾乎任何任務都能夠手動完成
但是查詢處理器使關系數據庫能夠漂亮而有效地完成工作
作為一個類比
設想兩個建築公司
兩個公司都接到了建築一所房屋的任務
要建築的房屋必須達到一定大小
而且必須有一定數量的窗戶
一定數量的臥室和盥洗室
一個廚房
等等
第一家公司在開始工作之前先制定計劃
他們確定所需步驟的順序
哪些步驟可以同時進行
哪些步驟取決於其前的步驟
以及哪些工人最適合執行不同的任務
第二家建築公司沒有作計劃
他們隨便撿起手頭兒現有的工具就開始施工了
除非任務很簡單(而建一個房子通常不是簡單的事)
否則事先作計劃的公司更有可能先完成
同樣的原因
帶有較完善的查詢優化器的關系數據庫更有可能比帶有簡單查詢優化器的關系數據庫以更快的速度完成查詢
特別是復雜的查詢
可用工具的類型也決定了一項工作的執行速度
而且在某種意義上講
決定能夠應付什麼樣的工作
例如
自動傾卸卡車對於建造房屋來說可能是合適的工具
但是對清理花園來說就不合適
與之類似
關系數據庫必須不僅只有一個完善的查詢優化器
還必須有查詢執行的正確的可用工具
而且必須為工作選擇正確的工具
在關系數據庫中有兩種主要的查詢優化器類型
基於語法的查詢優化器
和
基於開銷的查詢優化器
基於語法的查詢優化器
基於語法的查詢優化器為獲得對 SQL 查詢的應答結果創建一個過程計劃
但是它選擇的特定計劃取決於查詢的確切語法及查詢中的子句順序
無論數據庫中記錄的數目或組合是否隨時間變化而更改
基於語法的查詢優化器每次都執行同樣的計劃
與基於開銷的查詢優化器不同
它不查看或維護數據庫的統計記錄
基於開銷的查詢優化器
基於開銷的查詢優化器在備選計劃中選擇應答 SQL 查詢的計劃
選擇是基於對執行特殊計劃的開銷估算(I/O 操作數
CPU 秒數
等等)而作出的
它通過記錄表或索引中記錄的數目和構成的統計數字估算這些開銷
與基於語法的查詢優化器不同
它不依賴於查詢的確切語法或查詢中的子句順序
SQL Server
和 SQL Server
都實現了基於開銷的查詢優化器
SQL Server
在查詢優化器和查詢執行引擎的完善性方面提供了可觀的改進
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22046.html