6 performance sql-server-2008 sql-server sql-server-2014
我们正在将虚拟化数据库服务器从旧的 SQL Server 2008 R2 Standard (vmware) 升级到新的闪亮的 SQL Server 2014 Standard 服务器 (hyper-v)。我们正在做一些性能测试,令我们惊讶的是,新服务器系统的 CPU 时间似乎比旧的、噼啪作响的旧系统更糟糕。这些是系统:
旧服务器:
新服务器:
我们所做的一些历史:
在所有这些检查之后,对于仍在旧服务器中的缓存查询(仅由 CPU 时间引起),我们获得了更好的时间结果。
测试查询:
SELECT ROW_NUMBER() OVER(ORDER BY c.field1, c.field2) AS RowNumber, a.t1_t3ID, c.field1, c.field2, a.t1_t2ID, b.field1, a.BeginDate, a.EndDate, c.field3
FROM table1 a
INNER JOIN table3 c ON a.t1_t3_ID = c.t3_PKID
INNER JOIN table2 b ON a.t1_t2ID = b.t2_PKID
WHERE '20140101' BETWEEN a.BeginDate AND a.EndDate
查询执行计划(两台服务器相同,百分比相同):
两台服务器上 CPU 时间的结果:
旧服务器:
新服务器:
注意:我们还检查了 CONVERT_IMPLICIT 在这种情况下不会影响性能。
我们观察到的是,如果我们强制只使用一个处理器核心,旧服务器的 CPU 时间大致保持不变。如果我们在旧服务器上做同样的事情,执行计划就会切换到表扫描,CPU 时间会增加到 800 毫秒。
有人知道仍然可以检查/测试什么,或者至少对这个观察有一个解释?还是确定是虚拟化系统(vmware 与 hyper-v)导致数据库的 CPU 时间存在如此大的差异?
如果您还没有这样做,我强烈建议您:
1.> 在主机和来宾上安装正确版本的 Hyper-V 集成服务(如 VMWare Tools)。仅此一项就可以提高性能。
2.> 在 Hyper V 管理器中,禁用处理器上的兼容模式。
3.> 考虑对数据卷使用 SCSI 控制器。
4.> 考虑固定而不是扩展的磁盘大小。
如果您实施这些技术中的任何一种,我很想知道是否获得了任何性能改进。
归档时间: |
|
查看次数: |
789 次 |
最近记录: |