我正在尝试解决我们在其中一个生产 SQL Server 上看到的一些间歇性 CPU 峰值问题。我们正在运行具有 28 GB RAM 和 4 个 CPU 内核的 SQL Server 2008 R2 标准版。发生这种情况时,我们注意到大量 RESOURCE_SEMAPHORE_QUERY_COMPILER 等待,持续大约一两分钟,然后停止,然后 CPU 使用率恢复正常。
对此进行研究后,我了解到这通常是由编译大量不可重用的执行计划引起的,我们目前正在对应用程序进行更改以解决这些问题。
由于内存压力,计划缓存逐出也可以触发这种行为吗?如果是这样,我将如何检查这个?我想看看我们是否可以采取任何短期补救措施,例如升级服务器 RAM,直到我们部署应用程序修复程序。我能想到的唯一其他短期选择是将一些最繁忙的数据库移动到不同的服务器。