程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> MSSQLServer7.0查詢處理器

MSSQLServer7.0查詢處理器

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