1
对SOS_SCHEDULER_YIELD等待进行故障排除
在运行我们的企业ERP(Dynamics AX 2012)时,我注意到我们的生产环境似乎比我们的开发系统慢得多。 在运行跟踪的同时在开发和生产环境中执行相同的活动后,我确认与开发相比,SQL查询在我们的生产环境中执行得非常慢(平均慢10到50倍)。 最初,我将其归因于负载,并在下班时间在生产环境上重新运行了相同的活动,并在跟踪中找到了相同的结果。 我在SQL Server中清除了等待统计信息,然后让服务器在其正常生产负载下运行了一段时间,然后运行了以下查询: WITH [Waits] AS (SELECT [wait_type], [wait_time_ms] / 1000.0 AS [WaitS], ([wait_time_ms] - [signal_wait_time_ms]) / 1000.0 AS [ResourceS], [signal_wait_time_ms] / 1000.0 AS [SignalS], [waiting_tasks_count] AS [WaitCount], 100.0 * [wait_time_ms] / SUM ([wait_time_ms]) OVER() AS [Percentage], ROW_NUMBER() OVER(ORDER BY [wait_time_ms] DESC) AS [RowNum] FROM sys.dm_os_wait_stats …