我们正在尝试监控 SQL 工作线程,过去我们使用以下查询:
SELECT SUM(current_workers_count) as [Current worker thread] FROM sys.dm_os_schedulers
我们现在正在考虑只为每个 SQL Server 实例使用 PerfMon 计数器“Process>Thread Count”。在我们的分析过程中,我们注意到 PerfMon 线程计数与 dm_os_scheduler 或 dm_os_workers 中的工作线程之间存在细微差别。我们还将它与 dm_os_threads 中的内容进行了比较,仍然发现了差异。有谁知道 Microsoft 提供的 DMV 中跟踪的内容与 PerfMon 捕获的内容之间的区别?DMV 始终低于性能监视器中的值,因此它们必须“排除”某些东西。我们需要了解那是什么。
例如,dm_os_threads dmv 将显示 137,但性能计数器将显示 141,dm_os_scheduler 和 dm_os_workerss dmv 将分别显示 122 和 123。
我们使用的是 SQL Server 2017,CU22;视窗服务器 2016