首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server OS 任務排程機制:Scheduler、Worker 與非搶佔式合作排程

     編輯:關於SqlServer

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 階層

  1. Request:批次/ RPC 請求。
  2. Task:請求的執行單元(可平行化拆分為多 Task)。
  3. 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';

sys.dm_os_schedulers 查詢結果

Affinity 設定離線 Scheduler

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved