SQL Server 2005 中无法解释的 CPU 和磁盘活动激增

SQL Server 2005 中无法解释的 CPU 和磁盘活动激增

数据库服务器性能监视器

在我提出问题之前,请允许我描述一下情况。我有一台数据库服务器,上面有许多表。两个最大的表各包含超过 80 万行。大多数行的大小都小于 10k,但大约每 100 行中就有 1 行大于 1 MB 但小于 4 MB。因此,在 160 万行中,大约有 16000 行是这些大行。它们之所以这么大,是因为我们在数据库中存储了 zip 文件二进制 blob,但我离题了。

我们有一个在后台持续运行的服务,从这两个表中各修剪 10 行。在上面的性能监视器图中,这些是小凸起(红色表示 CPU,绿色表示磁盘队列)。每分钟我们都会得到一次 CPU 活动的大幅飙升,同时磁盘活动的激增,如屏幕截图中的红色箭头所示。

我运行了 SQL Server 剖析器,没有任何东西可以解释这个峰值。我怀疑这个峰值是在一个大行被删除时发生的。我已将剖析器的结果输入到调优向导中,但没有得到任何优化建议(即我假设这意味着我的数据库已针对当前工作负载正确编制索引)。

我并不太担心,因为服务器在所有情况下都表现良好,即使在高峰负载下也是如此。但是,我想知道我还能做些什么来找出导致这种峰值的原因?

更新:

经过进一步调查,CPU 和磁盘使用率激增是由于 SQL Server 的自动检查点造成的。数据库使用简单恢复模型,这会在每个检查点截断日志文件。我们可以在下图中看到这一点。每秒检查点数和日志使用百分比如上所述微软,当事务日志达到 70% 满时将出现检查点,并且我们正在使用简单恢复模型。

这很有启发,我确实学到了一些东西!

答案1

检查点,写出已更改的数据库页面。在许多情况下,这种情况并不总是发生。

https://stackoverflow.com/questions/865659/sql-server-checkpoints

相关内容