小编blo*_*les的帖子

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

我们有一个 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,但是这似乎接近于“喜欢”的环境升级,性能大幅下降。在进行更大的调查之前,只是检查一下我没有其他应该检查的东西。

performance sql-server upgrade sql-server-2019

6
推荐指数
1
解决办法
2975
查看次数

带有连接条件的 OUTER JOIN 导致意外结果

SQL Server 2008 R2,但在所有其他版本的 SQL Server 上也发现了可能的行为。

这似乎很明显,但对我来说,这似乎是一个错误。

以下查询给出了意想不到的结果,这是设置:

CREATE TABLE #Base (
Key1 int,
RefDate date
)


CREATE TABLE #JoinTable (
    Key1 int,
    RefDate date
    )

INSERT INTO #Base
SELECT 1, '2012-05-05'
UNION
SELECT 2, '2013-06-06'
UNION
SELECT 3, '2014-07-07'
UNION
SELECT 4, '2015-08-08'
UNION
SELECT 5, '2016-09-09'


INSERT INTO #JoinTable
SELECT 4, '2012-05-05'
UNION
SELECT 5, '2013-06-06'
UNION
SELECT 6, '2014-07-07'
UNION
SELECT 7, '2015-08-08'
UNION
SELECT 8, '2016-09-09'
Run Code Online (Sandbox Code Playgroud)

以下查询按我的预期执行,返回仅出现在基表中的 3 行:

SELECT * 
FROM #Base b
LEFT …
Run Code Online (Sandbox Code Playgroud)

join sql-server

2
推荐指数
1
解决办法
1105
查看次数

标签 统计

sql-server ×2

join ×1

performance ×1

sql-server-2019 ×1

upgrade ×1