用戶需求
數據庫技術的發展
呈現出了兩個顯著的發展趨勢
一方面
數據庫任務的管理和操作愈來愈自動化
智能化
許多以前需要手工完成的操作和配置等數據庫管理工作現在都可以使用圖形界面工具和向導來完成
大大減輕了用戶在數據庫管理中的工作量
使用戶有更多的時間和精力把自己的工作做的更好
另一方面
對於那些難以實現或者沒有必要實現自動化的操作
例如某些復雜的數據庫檢索等工作
則盡可能地集中在同樣的圖形化界面中來完成
這樣
在同一個窗口中
用戶可以完成更多的不同類型的操作
並且從該窗口中可以得到更多的有價值的信息
可以顯著地減輕用戶在不同窗口界面之間的轉換和查詢相關信息的工作量
最新的關系型數據庫管理系統SQL Server
充分體現了這種發展趨勢
與以前的版本相比
SQL Server的新版本有了許多改進
例如自動的服務器配置
新的數據庫存儲引擎
增加了許多向導等
另外一方面
在查詢處理器中
體現出了集中管理和操作的趨勢
在處理器中
不單可以完成普通的Transact
SQL語句的操作
還可以完成圖形化的執行規劃的優化工作
在該處理器中
使用了新的查詢規劃算法
可以大大提高查詢語句的執行速度
提高了系統的性能
特性概述
查詢處理器是一種可以完成許多工作的多用途的工具
在查詢處理器中
可以交互式地輸入和執行各種Transact
SQL語句
並且在一個窗口中可以同時查看Transact
SQL語句和其結果集
可以在查詢處理器中同時執行多個Transact
SQL語句
也可以執行腳本文件中的部分語句
提供了一種圖形化分析查詢語句執行規劃的方法
可以報告由查詢處理器選擇的數據檢索方法
並且可以根據查詢規劃調整查詢查詢語句的執行
提出執行可以提高性能的優化的索引建議
具體地說
查詢處理器有以下的特點和優點
彩色代碼編輯器
可以交互式地執行各種Transact
SQL語句
多查詢窗口
每一個查詢窗口都有自己的連接
可以定制選擇結果集的查看方式
支持上下文敏感的幫助系統
可以選擇執行腳本文件中的全部內容或者部分內容
圖形化地顯示執行規劃
可以分析執行規劃並且提出建議
支持根據執行規劃優化的可以提高性能的索引
支持新的查詢規劃算法
改進了的成本模型和規劃選擇模型
加快查詢進程的速度
支持新的散列連接連接和和合並連接算法
可以使用多索引操作
支持單個查詢語句在多個處理器上的並行執行
支持使用OLE DB的分布式的和多機種環境的查詢
交互式操作
在數據庫管理系統中
雖然數據庫技術有了很大的發展
提供了許多工具和向導
但是仍然有許多管理和操作不能依靠圖形界面來完成
還必須使用交互式命令來執行
年E
F
Code發表了題為
大型共享數據庫的數據關系模型
以來
確立了結構化查詢語言(SQL)在關系數據庫中的重要地位
目前
許多關系型數據庫供應商都在自己的數據庫中采用了SQL語言
當前
最新的SQL語言是ANSI SQL
Transact
SQL語句是微軟在SQL Server數據庫中的ANSI SQL
的實現
在SQL Server數據庫中
Transact
SQL語句由四個部分組成
第一部分是數據控制語言(DCL)語句
用來進行安全性管理
可以確定哪些用戶可以查看或者修改數據
這些語句包括GRANT
DENY
REVOKE等語句
第二部分是數據定義語言(DDL)語句
用來執行數據庫的任務
創建數據庫以及數據庫中的各種對象
這些語句包括CREATE
ALTER
DROP等語句
第三部分是數據操縱語言(DML)語句
用來在數據庫中操縱各種對象
檢索和修改數據
這些語句包括SELECT
INSERT
UPDATE
DELETE等
第四部分不是ANSI SQL
的內容
而是Transact
SQL語句的附加的語言元素
這些語言元素包括變量
運算符
函數
流程控制語言和注釋
這些Transact
SQL語句都可以在查詢處理器中交互式執行
在這個查詢處理器中
使用了彩色代碼元素編輯器
這樣
在該處理器中寫查詢語句時
SQL Server系統自動將該查詢語句中的關鍵字等SQL語言元素使用不同的顏色標示出來
可以醒目地檢查這些語句的語法是否正確
另外
這種著重顯示的顏色
用戶也可以根據自己的需要進行定制
對於查詢語句的結果集
可以選擇不同的顯示方式
既可以使用象以前版本中的那種表格形式顯示結果集
也可以選擇使用網格形式來顯示結果集
如果使用網格形式來顯示結果集
那麼用戶完全可以象使用表一樣操縱這些結果集中的內容
這些查詢語句和結果集可以根據需要
存儲在腳本文件中
查詢處理器提供了多個查詢窗口
這些同時打開的查詢窗口
都是分別表示一個線程
即分別對應一個用戶連接
因此
在這些查詢窗口中
窗口都是互相獨立的
窗口中的內容都是獨立執行的
另外
當打開多個查詢窗口時
由於每一個查詢窗口對應一個用戶連接
並且每一個用戶連接都要占用一定數量的系統資源
因此
打開的查詢窗口愈多
占用的系統資源也愈多
可以在查詢處理器中執行腳本文件中的內容
腳本文件是存放許多Transact
SQL語句的操作系統文件
在查詢處理器中
既可以執行該腳本文件中的全部Transact
SQL語句內容
也可以根據需要選擇一部分Transact
SQL語句來執行
在這個查詢處理器中
支持新的查詢規劃算法
改進了的成本模型和規劃選擇模型
可以大大加快對龐大數據庫查詢進程的速度
還支持新的散列連接連接和和合並連接算法
可以使用多索引操作
也可以提高查詢性能
執行規劃
執行規劃的概念
可以使用查詢處理器來為將要執行的查詢語句構造一個執行規劃
執行規劃就是一系列的產生查詢語句所要求結果的步驟
現在舉一個例子說明什麼是執行規劃
例如
Select * From customer Order By custid
在上面這個查詢語句中
表示從表customer中檢索出全部的內容
並且根據列custid進行排序
一般情況下
該查詢語句可能會產生下面的執行規劃步驟
第一步
掃描表customer主鍵的聚簇索引
第二步
根據列custid
對在第一步中得到的查詢結果進行排序
第三步
把在第二步中得到的結果返回給應用程序
查詢處理器使用存儲在數據庫表中的有關統計信息來確定選用的產生最終結果的最有效的方法
這種方法該查詢語句的執行規劃
如何訪問數據庫中的數據
為了能更好地理解查詢語句的執行規劃
看一看查詢語句是如何訪問數據庫中的數據的
一般地
系統訪問數據庫中的數據
可以使用兩種方法
第一種方法是表掃描
就是指系統將指針放置在該表的表頭數據所在的數據頁上
然後按照數據頁的排列順序
一頁一頁地從前向後掃描該表數據所占有的全部數據頁
直至掃描完表中的全部記錄
在掃描時
如果找到符合查詢條件的記錄
那麼就將這條記錄挑選出來
最後
將全部挑選出來符合查詢語句條件的記錄顯示出來
第二種方法是使用索引查找
索引是一種樹狀結構
其中存儲了關鍵字和指向包含關鍵字所在記錄的數據頁的指針
當使用索引查找時
系統沿著索引的樹狀結構
根據索引中關鍵字和指針
找到符合查詢條件的的記錄
最後
將全部查找到的符合查詢語句條件的記錄顯示出來
在SQL Server中
當訪問數據庫中的數據時
由SQL Server確定該表中是否有索引存在
如果沒有索引
那麼SQL Server使用表掃描的方法訪問數據庫中的數據
那麼
查詢處理器根據分布的統計信息生成該查詢語句的優化執行規劃
以提高訪問數據的效率為目標
確定是使用表掃描還是使用索引
統計信息
系統為每一個索引創建一個分布頁
統計信息就是指存儲在分布頁上的某一個表中的一個或者多個索引的關鍵值的分布信息
當執行查詢語句時
為了提高查詢速度和性能
系統可以使用這些分布信息來確定使用表的哪一個索引
查詢處理器就是依賴於這些分布的統計信息
來生成查詢語句的執行規劃
執行規劃的優化程度依賴於這些分布統計信息的准確步驟的高低程度
如果這些分布的統計信息與索引的物理信息非常一致
那麼查詢處理器可以生成優化程度很高的執行規劃
相反
如果這些統計信息與索引的實際存儲的信息相差比較大
那麼查詢處理器生成的執行規劃的優化程度則比較低
一般地
分布的統計信息與索引的實際存儲的信息是比較一致的
但是
當對某一個表有大量的數據操作時
特別是在被索引的列上有大量的數據被增加
修改或者刪除
那麼索引的實際存儲信息就發生了比較大的變化
這時
索引中關鍵字的分布統計信息就與實際情況有大的差別
因此
為了提高關鍵字的分布統計信息的准確程度
當表中的數據有比較大的操作變化時
應該針對表中的全部索引或者一個索引執行UPDATE STATISTICS語句
這樣系統重新計算關鍵字的分布統計信息
提高執行規劃的優化程度和訪問數據的效率
圖形化的執行規劃
查詢處理器從統計信息中提取索引關鍵字的分布信息
除了用戶可以手工執行UPDATE STATISTICS之外
查詢處理器還可以自動收集統計這些分布信息
這樣
就能夠充分保證查詢處理器使用最新的統計信息
保證執行規劃具有很高的優化程度
減少了維護的需要
在以前的SQL Server中
使用SHOWPLAN方法允許用戶查看某一個特定語句的處理器所創建的執行規劃
用戶可以根據這些信息來確定如何提高該查詢語句的性能
例如修改查詢語句的結構
增加另外的數據庫索引
在SQL Server
中
查詢處理器可以提供某一個語句的執行規劃的圖形化表示
在查詢處理器中
每一個圖標表示執行規劃中的一個步驟
可以在圖標之間移動光標
From:http://tw.wingwit.com/Article/os/xtgl/201311/8872.html