【问题标题】:Sql Server 2012 slower than 2005?Sql Server 2012 比 2005 慢?
【发布时间】:2012-06-11 05:08:17
【问题描述】:

我们已部署 SQL Server 2012 Enterprise,但存在性能问题:

  • 相同的数据(从我们的 SQL Server 2005 Enterprise 备份并于 2012 年恢复)
  • 3200条sql SELECT语句的测试脚本

我们使用 Management Studio 进行测试:

  1. 结果为纯文本
  2. 生成文件

在同一台计算机上:

  1. 2005 年:15 秒,2012 年:2 分钟
  2. 2005 年:14 秒,2012 年:30 秒

即使使用更强大的计算机,2012 年仍然比 2005 年慢。

有什么问题吗?我们安装 SQL Server 2012 的方式和默认参数?我们恢复备份的方式?我们能做什么?

【问题讨论】:

  • 没有指标-谁能说?它可能是磁盘,可能是索引,可能是内存,可能是损坏……等等……您需要缩小到最小的情况并进行调查。就目前而言,人们将无法提供帮助。但我建议您先重建所有索引,然后再从那里着手调查。
  • 我知道它缺乏指标。我想知道是否有人遇到过同样的问题,因为在同一台计算机上,我们使用 2 个默认安装 (2005/2012) 得到的结果非常不同。
  • 当你提供一些在 2012 年速度较慢的查询时,可能会有一个想法。
  • 听起来您好像缺少一些索引。通常 SMS 应该抱怨和提示创建一些特定的索引。检查 2005 年这些表上的索引(或禁用它们以查看估计的减速;-))
  • 我也注意到了缓慢的问题。我有一台更新的开发笔记本电脑 - 上面装有 sql server 2008 R2 ......刚刚升级到 sql server 2012 - 通过 SSMS 一切似乎都变慢了。简单的事情——比如创建一个新的数据库并刷新数据库以显示它。我们将它安装在一台较新的专用服务器上,而且通过 SSMS 似乎也很慢。对我来说,这一切都是通过 SSMS 2012 进行交互时完成的。

标签: sql performance sql-server-2005 sql-server-2012


【解决方案1】:

当我看到类似的变化时,我的第一个想法是确保您已为所有表重新生成统计信息。网上有很多脚本可以做到这一点,也有很多关于是否使用内置存储过程、是否进行全扫描等的讨论。这是一个快速而肮脏的脚本,我会在进行比较之前运行它。

CREATE  PROCEDURE sp_UtilityUpdateStats AS
SET NOCOUNT ON

DECLARE @iCounter       INT
DECLARE @iCounterMax    INT

DECLARE @TableList TABLE
(
    iTable INT IDENTITY(1,1) PRIMARY KEY,
    szTableName VARCHAR(128)
)

INSERT @TableList (szTableName)
SELECT [name] FROM sysobjects
WHERE [type] = 'u'
ORDER BY [name] DESC


SET @iCounterMax = (SELECT MAX(iTable) FROM @TableList)
SET @iCounter = 0
DECLARE @szTableName VARCHAR(128)

RAISERROR(N'------STARTING sp_UtilityUpdateStats------', 10, 1) WITH LOG
WHILE @iCounter < @iCounterMax
BEGIN
    SET @iCounter = @iCounter + 1

    SELECT  @szTableName = szTableName
    FROM @TableList
    WHERE iTable = @iCounter

    RAISERROR(N'UPDATE STATISTICS YourDB.dbo.%s', 10, 1, @szTableName) WITH LOG
    EXEC ('UPDATE STATISTICS YourDB.dbo.' + @szTableName)

END
RAISERROR(N'------FINISHING sp_UtilityUpdateStats------', 10, 1) WITH LOG

SET NOCOUNT OFF
GO

【讨论】:

  • 运行这样的脚本与使用内置维护计划更新统计数据有何不同?
猜你喜欢
  • 2015-05-20
  • 2013-01-08
  • 2014-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多