我在 Amazon EC2 上托管的虚拟化环境中使用 Microsoft SQL Server 2017 Web 版。根据 MicrosoftSQL Server 2017 的版本和支持的功能页面上的“单个实例使用的最大计算能力 - SQL Server 数据库引擎”为“限制为 4 个插槽或 16 个核心中的较小者”。
根据虚拟环境中的 Windows 任务管理器,我有 4 个虚拟处理器。但是当我运行长时间运行的繁重 SQL 查询时,CPU 利用率最高达到 25%。
如果 Web 版的限制是 4 个插槽或 16 个核心中较小者,难道我不应该被允许使用 100% 的虚拟处理器吗?还是我误解了 Windows 或 SQL Server 对虚拟处理器的分类?
谢谢
答案1
根据虚拟环境中的 Windows 任务管理器,我有 4 个虚拟处理器。但是当我运行长时间运行的繁重 SQL 查询时,CPU 利用率最高达到 25%。
这意味着,即使虚拟机显示为每插槽 1 个核心(这很糟糕),它仍然能够使用每个许可的所有 4 个核心。因此,查询正在执行串行计划,而不是并行计划。
事实上,这是一个“长时间运行的查询”,并且占用了“25% 的 CPU”,这意味着查询可能写得不太好,或者架构设计不符合标准。无论哪种情况,通过并行计划运行它(如果查询可能的话)只会使服务器的 CPU 使用率高于正常水平。
最好查看查询、模式和支持对象并进行调整。