从 SQL Server 2005 迁移到 SQL Server 2012 后的 SQL 性能问题

Gui*_*ele 5 sql-server-2005 sql-server sql-server-2012

昨天我们将一个 SQL Server 2005 数据库迁移到了 SQL Server 2012。我们做了一个完整备份并在新服务器上恢复了它。

现在的问题是 SQL Server 2012 上的数据库比使用 SQL Server 2005 的 Windows 2003 服务器慢得多。更令人担忧的是,完全相同的维护计划(在 SQL Server 2005 上运行需要 37 分钟)是现在需要 2 个多小时并使用 16GB 内存,并且tempdb正在填满C:驱动器上的空白空间。这是怎么回事?

两者的服务器规格相同:

  • X5650 @ 2.67GHz (4procs)
  • 16 GB 内存

维护计划包括以下步骤:

  • 步骤 1:检查数据库完整性
  • 第 2 步:重新组织索引
  • 第 3 步:重建索引
  • 第 4 步:收缩数据库

Kin*_*hah 6

可能有很多事情需要解决。以下是在得出任何结论之前要检查的事项的概述:

首先,您的 POST 恢复步骤序列会弄乱您所做的所有工作。永远不要缩小您的数据库,尤其是在进行索引维护之后。

阅读 -为什么你不应该缩小你的数据文件Paul Randal。

以下是我将任何较低版本迁移到较高版本的常见恢复后步骤。在您的情况下,SQL Server 2005 到 2012。

  • 将已恢复数据库的兼容性级别更改为 110(但需要进行完整的回归测试)
  • 在还原的数据库上运行 DBCC UPDATEUSAGE DBCC UPDATEUSAGE('database_name') WITH COUNT_ROWS
  • 使用完整扫描更新所有表的统计信息: Update Statistics table_name with FULLSCAN
  • 检查碎片级别并根据碎片级别运行所有索引的重组/重建。您可以使用Ola 的 Index 和 Stats 维护脚本
  • 使用重新编译所有 SP sp_recompile 'procedureName'
  • 刷新您的看法 SP_REFRESHVIEW view_name

----------

作为旁注:

  • 在新服务器上打开即时文件初始化
  • 多个相同大小的tempdb 数据文件
  • 启用跟踪标志 1118
  • 正确配置最大和最小内存。特别是最大内存远离默认值。
  • 正确调整 MAXDOP 设置。有关更多详细信息,请参阅https://dba.stackexchange.com/a/36578/8783
  • 最好是安装sp_Blitz从布伦特奥扎尔。 运行它并解决它报告的关键和高优先级问题。
  • 你甚至可以使用SQL电源文件从kendalvandyke - SQL电源督工作与SQL Server的所有版本的SQL Server 2000至2012年从Windows 2000和Windows XP通过Windows Server 2012的和Windows和Windows Server和消费者的Windows操作系统的所有版本8. 也可用于规划升级 - 查看实例上正在使用的隐藏功能。
  • 为临时工作负载启用优化和默认备份压缩选项。

有关更多详细信息,请参阅 UPGRADE 和 POST UPGRADE 步骤。


小智 0

也遇到过这个问题。正是出于这个原因,我们保留了 2008R2 版本。

从 SQL Server 2012 开始,每个版本的 SQL Server 都有两个计算容量限制: 最大套接字数(与物理处理器或套接字或处理器包相同)。操作系统报告的最大核心数。

http://technet.microsoft.com/en-US/library/ms143432(v=sql.110).aspx#Engine

  • 这是否有助于解决任何性能问题,这是非常模糊的。 (3认同)