我正在尝试了解数据库(SQL 2008)的潜在性能问题,尤其是一个性能计数器SQLServer:Latches \ Total Latch Wait Time总锁存等待时间(ms)。我们看到数据库响应时间变慢,并且我可以与之匹配的唯一相关峰值是总锁存等待时间和锁存等待/秒的峰值。我没有在磁盘IO,CPU使用率或内存中看到任何特定的瓶颈。

SQLServer闩锁的常见解释是它是轻量级的锁,但是我试图更详细地了解什么是闩锁,它与锁有何不同以及我看到的大量锁可能是一个指标。

最佳答案

我建议您调查sys.dm_os_latch_stats并查看与以前的基准相比,哪种类型的闩锁增加了争用和等待类型。

如果您看到BUFFER类型的闩锁中出现尖峰,则意味着它是由冲突驱动的,以修改同一页面而导致更新。其他闩锁类型在MSDN中也有简短的解释,可以指导您解决问题的根本原因。对于标记为“仅供内部使用”的用户,您将不得不与MS一起开立支持案例,以详细说明它们的含义即将在NDA上使用。

您还应该查看sys.dm_os_wait_stats。如果您看到PAGELATCH_*增加,则与上面的BUFFER类型锁存器存在相同的问题,即试图修改同一页面(也称为争用)。作为更新热点。如果看到PAGEIOLATCH_*增加,则问题出在I / O暂存器上,需要时将页面加载到内存中的时间太长。

10-08 08:43