SQL Server OS 定位
運行於 Windows 之上,抽象出排程、記憶體、死結偵測、鎖管理、緩衝集區管理等核心功能,為儲存引擎提供一致服務層。
非搶佔式合作排程 vs Windows 搶佔式排程
- Windows:時間片 + 優先級,OS 強制剝奪 CPU,Context Switch 成本高,不知資料庫關鍵路徑。
- SQL OS:合作模式,Worker 主動讓出 CPU(等待鎖、I/O、YIELD),大幅減少 Context Switch。
Scheduler 核心概念
- 每個邏輯 CPU 對應一個 Scheduler(可見
sys.dm_os_schedulers)。
- 只有持有 Scheduler 權限的 Task 才能執行。
- 可透過
ALTER SERVER CONFIGURATION SET PROCESS AFFINITY 線上將 Scheduler 離線,無需重啟。
Task、Worker、Request 階層
- Request:批次/ RPC 請求。
- Task:請求的執行單元(可平行化拆分為多 Task)。
- Worker:綁定 OS Thread,執行 Task 的實體載體。
Worker 池大小動態調整,避免為每個連線固定配置 Thread 浪費資源。
關鍵 DMV
SELECT scheduler_id, cpu_id, status, current_tasks_count, runnable_tasks_count
FROM sys.dm_os_schedulers
WHERE status = 'VISIBLE ONLINE';

