一、SQL Service架構
1、Database Engine
a、是用於儲存、處理和保護資料的核心服務。
b、可建立線上交易或分析的關聯式資料庫,包括資料表、索引、檢視和預存程序等資料庫物件,以檢視管理和保護資料。
c、整合.NET CLR引擎到SQL Server核心,讓程式設計者可用.NET語言來開發SQL Server內物件。
d、支援ANSI SQL 2003與W3C的XML標準,讓關聯式資料與XML兩種常用的資料儲存格式都可集中到Database Engine來處理。
2、Full Text Search
a、SQL Server 7.0,使用Microsoft Search Service讓資料表欄位內容可以全文檢索方式查詢
b、SQL Server 2000之後,增加image資料格式檢索能力,可將.doc、.xls、.ppt、.txt、.htm直接放入SQL Server大型二進位欄位一併檢索。
d、SQL Server2005建立全文檢索的Catalog內容時,擴展Index population的速度較舊版速度快上一倍,查詢效率30~50%。
=>全文檢索服務支援多執行個體(multi-instanced),而各SQL Server執行個體使用各自全文檢索服務執行個體時,不會互相干擾。
=>支援叢集架構以提高可獲得性
=>可以備份/還原、卸離/附加(detach/attach)全文檢索的catalog,讓資料庫還原或搬移時,不需重建catalog
3、Replication
複寫用於從某個資料庫複製/散發資料和物件至另一資料庫,之後在兩個資料庫之間進行同步處理以維護一致性。
SQL Server提供三種複寫
a、快照式複寫
b、交易式複寫
c、合併式複寫
4、Query Notification
SQL Server2005在使用者存取的資料被他變更時,可主動地通知前端應用程式。
5、Service Broker
提供訊息導向或非同步程式的開發平台,透過SQL Server所提供的佇列(Query),讓服務間非同步的溝通,並保證訊息傳遞間的品質,訊息一定送達且按照發送的先後順序只寄達一次。
6、Analysis Services 2005提出的概念
a、整合異質型資料來源
b、豐富的資料呈現與瀏覽模型,以專業領域的用詞呈現符合商業邏輯的資料
c、深入分析
d、進階的快取
7、Integration Services
8、Reports Services
=============================
二、SQL Server資料存取架構
1、查詢:透過各種物件建立SQL查詢語法
2、使用者端Net-Library採用預設的協定,或是以「用戶端網路公用程式」(SQL Server Client Network Utility)設定通訊協定,經由呼叫Windows的IPC(communication)API,將封包轉由作業系統所支援的通訊協定堆疊傳出。
=>一般來說SQL Server7.0之前優先採用具名管道(Named Pipes),SQL Server 2000之後改採TCP/IP。
=>可採用各種加/解密法傳輸,但會降低效率。
3、ODS(Open Data Services)負責將TDS(Tabular Data Stream)封包內的SQL語法還原,並轉交給關聯式引擎。關聯式引擎最佳化執行計劃後,再賦予儲存式引擎執行。
4、儲存引擎執行完關聯式引擎交付的執行計劃後,將結果傳回給關聯式引擎,關聯式引擎再將其包裝成結果集(resultset),並傳遞給ODS。
5、ODS將結果轉成TDS封包,繼續回傳給「伺服器端Net-Libraries」,「伺服器端Net-Libraries」與「使用者端Net-Library」合作,將結果透過網路傳回。
「使用者端Net-Library」將網路封包還原成TDS封包,轉給上層資料庫介面OLE DB或ODBC等等。
6、OLE DB或ODBC將TDS所描述的結果集還原成上層應用程式可以接受的「結果集 」也就是我們一般應該程式存取的結果。
=============================
三、SQL Server的核心分成兩大引擎
1、Relational Engine
=>SQL Manager總管所有事務的流程,因為透過TDS傳遞有可能是一般SQL語法/pseudo預存程式。
=>一般SQL語法交由左方單元執行。
=>pseudo系統預存程序則由SQL Manager自行處理。
=>再透過ODS轉成TDS通訊協定還給使用者。
=>Catolog Service主要處理Create Table、Create View等語法,Catalog Services主要可橫跨兩個引擎(關聯式引擊/儲存引擎)
=>UMS(User Mode Scheduler)與ODS合作,將工作排程賦予到Thread或fiber。負責有效地運用多CPU的硬體資源,且避免過多的Thread反而拖垮系統。
=>系統預存程序則是由一堆額外之DLL實作出來的,主要提供SQL Server延伸的功能(ex:COM元件)。
a、Relational Engine主要工作
(1)掃描與分析SQL語法,將其分成各個邏輯單元,如關鍵字、參數、運算子及識別項。
(2)建立最佳的執行計畫:此為關聯式引擎最重要的工作。一般而言相同的SQL語法其執行並建立結果集的方式不止一種。查詢最佳化程式(Query Optimizer)必須判斷各種方式、估計其成本(以檔案I/O與使用CPU為主),選擇其成本最低的方式。
(3)處理資料定義語言(DDL)和其它SQL語法(例如:Create、Set等語法)。
(4)格式化結果:關聯式引擎會將回用戶端的結果格式化,可能會格式化成傳統的表格式結果集,或成為XML文件。然後結果會被封裝成一個以上的TDS封包,再傳回前端應用程式。
=============================
2、Storage Engine
=>Access methods manager:設定並要求對資料表或索引做掃描的動作,準備記錄集以傳回關聯式引擎。
=>Row operations manager:存取、修改和執行其它與單筆記錄相關的運作。
=>Index manager:存取索引的搜尋。
=>Page manager:控制分頁(Page)和extent的存取。
=>Text manager:控制text和image資料型態的儲存。
=>Lock manager:要求並釋放鎖定、解決死結,並在需要時升高鎖定的層級。
=>Log manager:將在記憶體中的交易記錄成可寫進硬碟記錄檔。
=>Sort manager:管理資料排序工作。
=>Transaction manager:管理交易,並與Lock Manager協調鎖定的運作。
=>File/Device manager:管理硬碟上的檔案和備援裝置。
=>Buffer manager:讀取實體分頁,將分頁的內容放入記憶體,並協助其它的manager讀取分頁內容。
=& gt;其它的manager:管理各種工具程式,如大量載入(bulk load), DBCC,備份和還原,以及虛擬裝置介面(Virtual Device Interface;VDI)。VDI讓工具程式可以存取SQL Server的資料結構而不需要經過關聯式引擎。
a、儲存引擎主要的工作表如下:
(1)管理資料庫的實體檔案
(2)建立及讀取硬碟上儲存著資料的分頁。
(3)管理實體檔案的資料緩衝區及I/O。
(4)控制多個需求的並行處理。
(5)管理交易並使用鎖定來控制平行存取的資料行。
(6)記錄(Log)與復原。
(7)實作公用程式功能(ex:BACKUP、RESTORE和DBCC陳述式及大量複製(Bulk Copy)等)
沒有留言:
張貼留言