SQL Server 2019 的性能比 2012 差……我错过了什么吗?

blo*_*les 6 performance sql-server upgrade sql-server-2019

我们有一个 SQL Server 2012 服务器,它在(据我所知)相同的基础设施上远远优于 SQL Server 2019 数据库。我们在具有相同 SLA 的云平台上托管这两个数据库。两者都有 180GB RAM 和 16 个处理器。

但是,存在一些关键差异。

  1. 2012 数据库服务器是企业版,2019 是标准版。据我所知,这应该没什么区别
  2. 2012数据库恢复到2019服务器,版本改为150(2019)
  3. 2012 服务器上的 MAXDOP 为 0,2019 服务器按照 Microsoft 和其他公司的建议将其设置为 8
  4. 并行性的成本阈值 = 2012 服务器上的 5,2019 服务器上的 20

编辑:我刚刚意识到的另一个主要区别 - 一个是 Windows Server 2008,另一个是 Windows Server 2019。它也可能是服务器端设置......

所有 SQL 磁盘的分配单元大小设置为 64kb,SQL 具有能够控制文件大小本身的正确权限。服务器设置为高性能模式。还有什么我应该改变服务器端?

其他数据库设置没有改变,所以以下设置是2019年的默认设置,我相信:

  • 旧基数估计 = OFF
  • 参数嗅探 = ON
  • 查询优化器修复 = OFF

我们所做的主要查询类型是执行更新和插入的大型复杂多连接查询,偶尔会从用户那里进行小选择。我们将大文件加载到数据库中,然后在大型查询中处理数据,通常一次一个。在这些大的“加载”之间,我们有用户在其他未加载/处理的数据库表上进行选择,为将来的加载/处理步骤做准备。通常,我们的处理性能降低了 30%-50%。我认为这是因为 MAXDOP 设置,但将其更改为 0 对一系列运行没有影响。

我们的主要症状是,当我们在 2019 年服务器忙于处理时尝试连接到它时,我们会遇到锁定超时,而 2012 年服务器仍在为连接提供服务,只是速度很慢。我正在考虑将服务器上的连接超时设置设置为较高的值,但是我怀疑我们仍然无法从服务器获得响应。就好像它甚至有点忙就会阻塞所有新连接。

还有其他我应该尝试的事情吗?这些数据库设置值得摆弄吗?

我可以进一步深入研究并开始查看 DMV,但是这似乎接近于“喜欢”的环境升级,性能大幅下降。在进行更大的调查之前,只是检查一下我没有其他应该检查的东西。

Dav*_*oft 11

我相信您刚刚发现为什么推荐的升级过程是升级您的数据库,启用查询存储,并在提高数据库兼容性级别之前进行测试。

在此处输入图片说明 更改数据库兼容级别并使用查询存储

如果您有很多计划回归,您可以在更高的数据库兼容性级别继续使用旧的基数估计器:

ALTER DATABASE SCOPED CONFIGURATION
SET LEGACY_CARDINALITY_ESTIMATION = ON;
Run Code Online (Sandbox Code Playgroud)