sql-server - 以兼容级别 80 运行 SQL Server 2005 数据库是否会对性能产生负面影响?

标签 sql-server database

我们的软件必须能够在 SQL Server 2000 和 2005 上运行。为了简化开发,我们在兼容级别 80 下运行 SQL Server 2005 数据库。但是,在某些方面,SQL 2005 的数据库性能似乎比 SQL 2000 慢案例(我们还没有使用基准确认这一点)。将兼容级别升级到 90 会提高 SQL 2005 服务器的性能吗?

最佳答案

我想我在某处读到,SQL Server 2005 数据库引擎应该比 SQL Server 2000 引擎快大约 30%。可能是您必须在兼容模式 90 下运行数据库才能获得这些好处。

但我偶然发现了两种情况,与 mssql 2000 相比,使用 mssql 2005 时性能会急剧下降:

  1. Parameter Sniffing:当使用存储过程时,sql server会在你第一次调用该过程的时候准确计算出一个执行计划。执行计划取决于为该调用提供的参数值。在我们的例子中,通常需要大约 10 秒的过程在 mssql 2005 下运行了几个小时。看看 herehere .

  2. 使用分布式查询时,mssql 2005 在远程服务器上的排序顺序假设方面表现不同。默认行为是,服务器将查询中涉及的整个远程表复制到本地 tempdb,然后在本地执行连接。解决方法是使用 OPENQUERY,您可以在其中准确控制从远程服务器传输的结果集。

关于sql-server - 以兼容级别 80 运行 SQL Server 2005 数据库是否会对性能产生负面影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7237/

相关文章:

php - Mysqli_close()期望参数1为mysqli

sql - 显示查询中 SQL Server 代理运算符的列表

sql-server - 如何生成 dbml 文件?

c# - 从 DataSet 创建 SQL Server 数据库

php - 根据用户输入 php 更新数据库

PHP/MySQL 将字符串插入数据库

.net - LINQ 查询与存储过程

sql - 如何避免在同一选择中多次重复计算表达式?

mysql - 引用多个唯一键的外键

database - "Entity"和 "Record"之间的区别?