在兼容性级别为80下运行SQL Server 2005数据库是否会对性能产生负面影响?

11

我们的软件必须能够运行在 SQL Server 2000 和 2005 上。为了简化开发,我们将 SQL Server 2005 数据库运行在兼容性级别80上。然而,在某些情况下,SQL 2005 上的数据库性能似乎比 SQL 2000 更慢(我们尚未使用基准测试确认)。将兼容性级别升级到90是否会提高 SQL 2005 服务器的性能?

4个回答

5
我记得在某个地方读到,SQL Server 2005数据库引擎应该比SQL Server 2000引擎快约30%。也许你需要在兼容模式90下运行数据库以获得这些好处。
但是我遇到了两种情况,在使用mssql 2005时,性能会与mssql 2000相比急剧下降:
1. 参数嗅探:当使用存储过程时,sql server会在首次调用该过程时计算出一个执行计划。执行计划取决于为该调用给定的参数值。在我们的情况下,通常需要大约10秒钟的过程在mssql 2005下运行数小时。在这里这里查看更多信息。
2. 在使用分布式查询时,mssql 2005在关于远程服务器上的排序顺序的假设方面表现不同。默认行为是,服务器将涉及查询的整个远程表复制到本地tempdb,然后在本地执行连接。解决方法是使用OPENQUERY,您可以精确控制从远程服务器传输的结果集。

2

在您将数据库转移到2005之后,您是否进行了完全扫描的统计信息更新?重建索引?

首先尝试这些操作,然后再次检查性能。


1

另外需要注意的是,如果你运行兼容性级别90,那么一些不再支持的旧式外连接(*=和=*)将无法使用。


1
你的查询中使用了子查询吗?
从我的经验来看,一个带有子查询的SELECT语句在SQL Server 2000上运行良好,在SQL Server 2005上可能会变得非常缓慢(甚至可能慢10倍!)。
做一个实验 - 重写一个查询以消除子查询,并观察其性能如何改变。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接