我们在生产环境中使用SQL Server 2008 R2,正在考虑升级到SQL Server 2019。
我刚刚在我的计算机上安装了SQL Server 2019开发人员版来测试它,从生产服务器获取了一个新的备份,并在我的计算机上进行了还原。
我也在我的计算机上安装了SQL Server 2008 R2,所以我期望能够进行一些并行性能比较。
SQL Server 2008 R2和SQL Server 2019都安装在同一个nvme驱动器(C:)上,而且这两个实例都在该驱动器上,但是SQL Server 2019的tempdb在另一个驱动器(D:)上。
在SQL Server 2008 R2上运行特定的存储过程需要1分43秒,在SQL Server 2019上需要3分41秒...我运行了大约十次这个存储过程,结果相似(加/减几秒钟)。
在执行存储过程时,磁盘IO仅达到6MB/s的读写速度,CPU利用率对于SQL Server 2008 R2和SQL Server 2019均为约10%。
我重启了计算机并首先在2019实例上运行了存储过程,结果相同(我担心SQL Server 2008 R2已经占用了所有可用内存,但事实并非如此)。
所以我尝试了以下所有操作,每次在运行存储过程之间检查是否有任何改进:
- 重新启动 - 删除SQL Server 2008 R2和SQL Server 2019数据库并再次进行还原(只是为了确保数据集是相同的) - 关闭Windows Defender - 确保使用
我唯一看到的区别是,我的SQL Server 2008 R2是默认实例,而SQL Server 2019是命名实例,但我甚至无法想象为什么会如此大幅影响性能。
难道
我错过了什么?
我刚刚在我的计算机上安装了SQL Server 2019开发人员版来测试它,从生产服务器获取了一个新的备份,并在我的计算机上进行了还原。
我也在我的计算机上安装了SQL Server 2008 R2,所以我期望能够进行一些并行性能比较。
SQL Server 2008 R2和SQL Server 2019都安装在同一个nvme驱动器(C:)上,而且这两个实例都在该驱动器上,但是SQL Server 2019的tempdb在另一个驱动器(D:)上。
在SQL Server 2008 R2上运行特定的存储过程需要1分43秒,在SQL Server 2019上需要3分41秒...我运行了大约十次这个存储过程,结果相似(加/减几秒钟)。
在执行存储过程时,磁盘IO仅达到6MB/s的读写速度,CPU利用率对于SQL Server 2008 R2和SQL Server 2019均为约10%。
我重启了计算机并首先在2019实例上运行了存储过程,结果相同(我担心SQL Server 2008 R2已经占用了所有可用内存,但事实并非如此)。
所以我尝试了以下所有操作,每次在运行存储过程之间检查是否有任何改进:
- 重新启动 - 删除SQL Server 2008 R2和SQL Server 2019数据库并再次进行还原(只是为了确保数据集是相同的) - 关闭Windows Defender - 确保使用
LocalSystem
相同的系统帐户来启动SQL Server 2008 R2和SQL Server 2019引擎
- 在SQL Server 2019中将DB compat level
从2008(10)更改为2019(15)
- 在SQL Server 2019中重建主索引(担心2019无法充分利用使用2008 R2创建的索引)
- 将SQL Server 2019 tempdb移动到与DB相同的驱动器(C:)我唯一看到的区别是,我的SQL Server 2008 R2是默认实例,而SQL Server 2019是命名实例,但我甚至无法想象为什么会如此大幅影响性能。
难道
开发人员版
有某种性能惩罚吗?我错过了什么?