高度碎片化的索引可能会导致SQL Server中的CPU峰值



我每天都会看到数据库服务器上的CPU峰值,我发现索引有很长一段时间没有重建。这可能是这些尖峰的原因吗?

碎片化可能会导致更多的CPU负载,但不会导致峰值。为什么会这样?看看其他地方。了解在峰值期间运行的查询,并查看具有大量CPU的长时间运行的查询。

是的,但这完全取决于特定表中可用记录的数量。碎片化可能会导致CPU峰值,以及在加载期间服务器100%的CPU利用率。因为在加载期间按索引搜索页面时,CPU有4毫秒的时间来执行查询,如果在CPU上执行的查询由于碎片而需要内存中的额外页面(内存中没有),则存储引擎必须在页面分散的B+树中来回查看,导致CPU必须将该查询溢出到服务员列表中,一旦数据可用,它就会移动到可运行队列(等待CPU执行查询)。想象一下,如果表有巨大的记录,那么碎片肯定会对CPU产生影响。

最新更新