引擎架構總覽
SQL Server 2008 引擎包含四大核心組件:
- 協定層
- 關聯引擎
- 儲存引擎
- SQLOS
1. 協定層
SNI (SQL Server Network Interface)
- 取代 SQL 2000 的 Net-Libraries 與 MDAC
- 提供客戶端/伺服器間網路連接 API
- 支援四種協定:共享記憶體、TCP/IP、命名管道、VIA
TDS (Tabular Data Stream) 端點
- Microsoft 私有協定,定義資料庫互動格式
- 安裝時為四種協定各建一端點,啟用後所有用戶可用
- 專用管理員連接 (DAC) 另有專屬端點
- TDS 封包經 TCP/IP 傳輸至伺服器
協定層處理流程
- 接收 TDS 封包
- 解封裝、反序列化,取得請求內容
- 將結果、狀態訊息封裝為 TDS 回應客戶端
2. 關聯引擎
又稱查詢處理器,負責查詢編譯、優化、執行。
核心子組件
| 組件 | 職責 |
| 命令剖析器 | 語法檢查、產生查詢樹、查找計畫快取 (以 T-SQL 雜湊值比對) |
| 查詢優化器 | 基於成本模型 (CPU、I/O、記憶體),選擇最低成本執行計畫 |
| SQL 管理器 | 管理預存程序、計畫、自動參數化 |
| 資料庫管理器 | 管理編譯/優化所需的中繼資料存取 |
| 查詢執行器 | 執行優化器產出的計畫,調度各運算子 |
優化器關鍵流程
- 規範化:將查詢分解為合適粒度
- 最佳化:成本估算、索引分析、統計資料參考
- 輸出:最佳執行計畫
3. 儲存引擎
| 組件 | 職責 |
| 存取方法 | 掃描資料/索引頁面、建立 OLE DB 資料列集、向緩衝區管理器發出請求 |
| 交易管理器 | 含鎖管理器 (並發控制、隔離等級) 與記錄管理器 (WAL、記錄寫入) |
| 緩衝區管理器 | 管理緩衝集區中資料頁面分佈、頁面置換、髒頁寫入 |
4. SQLOS (SQL Server Operating System)
SQL Server 2005 引入,提供作業系統層級服務:
- 排程器 (Scheduler) - 非搶佔式排程、NUMA 感知
- 記憶體管理 - 緩衝集區、計畫快取、CLR 記憶體
- 同步化物件 - Spinlock、Mutex、Latch
- 死鎖偵測、例外處理、堆疊追蹤
- 動態管理檢視 (DMV) 基礎設施
查詢處理端到端流程
- 客戶端 → SNI → TDS 封包
- 協定層解析 → 命令剖析器語法檢查
- 查詢優化器產生/重用計畫
- 查詢執行器向儲存引擎請求資料
- 存取方法 → 緩衝區管理器 (記憶體/磁碟)
- 交易管理器確保 ACID
- 結果封裝 → TDS → 客戶端
- 上一篇文章: SQL Server 2008 I/O 子系統效能規劃與監控指南
- 下一篇文章: SQL Server 2008 CPU 架構與效能監控指南
Copyright ©
程式碼之家 All Rights Reserved