我们正准备将我们的 SQL Server 2014 系统升级到 SQL Server 2019。作为尽职调查的一部分,我们创建了一个工作负载,我们正在针对这两个系统进行测试。我们观察到的情况如下:
- SQL Server 2019 上的查询性能平均快了 50% 左右 - 好!
- SQL 2019 上的读取量减少了约 40% - 好!
- CPU 利用率平均高出约 30% - 不好。最后一点是引起我们关注的原因。这是否意味着我们必须计划在迁移到 SQL Server 2019 的过程中增加 CPU 容量?
从稍微不同的角度来描述我们所看到的:当我们尝试通过推动更高数量的查询/秒来增加工作量时,我们看到SQL Server 2019 的吞吐量较低,因为我们更早地耗尽了 CPU 并因此开始看到错误。
我希望这是有道理的,我想知道其他人是否有类似的经历?
首先:对于相同的工作量,CPU 使用率真的更高吗?由于性能提高了 50% 在任何给定时间段内平均完成了 33% 的工作,因此使用多 30% 的 CPU 资源取消了使用相同数量的 CPU 来完成相同数量的工作,只是在更短的时间内的时间。更少的页面访问可以解释这一点:CPU 在工作位之间等待 IO 完成的时间更少。
当然,这取决于您如何测量 CPU 利用率 - 请记住,对于现代 CPU,某些读数可能非常不准确(请参阅https://aaron-margosis.medium.com/task-managers-cpu-numbers-are-all-but -meaningless-2d165b421e43以及其他类似文章)。我们需要更多关于您如何进行测量的详细信息,以提供真正有用的答案。
同样,我们需要知道您是如何测量吞吐量的。尽管如上所述,您可能会更早地使用 CPU,因为需要较少的 IO。
另外:您是否比较了不同版本的运行之间使用的查询计划?在更新的引擎下,一些正在提交的查询可能会获得不太理想的计划 - 基数估计等方面的差异通常是有益的,但因为它们只是猜测可能会适得其反。
永远不要简单地报告“我遇到错误”。你看到了什么错误?