将数据库从 SQL Server 2000 升级到 SQL Server 2005 会导致查询速度变慢的常见原因有哪些?这来自具有数百个表的 ASP.NET 1.1 应用程序,所有内容都已编入索引,并且似乎在旧版本上运行良好。
8 回答
您确定您的所有索引都在升级后幸存下来吗?硬件有什么区别吗?您是否使用 SQL Profiler 来确定哪些查询运行速度较慢以尝试追踪问题?
可能有很多事情。如果没有具体的查询示例和其他信息,我认为任何人都无法提供太多帮助。
升级后,您需要做的第一件事是使用全扫描更新统计信息并重建索引,否则您将获得次优计划
您可能希望通过查看最麻烦的查询的执行计划来重新评估您的索引。SQL 2005 查询优化器可能会提出完全不同的执行计划。
您还应该确保更新整个数据库的统计信息。
一些东西...
- 你用的是什么服务包?
- 您是否应用了任何其他修补程序或 CU?
- 升级过程中是否将 db 兼容级别从 80 更改为 90?
如果您使用服务器端游标,请注意从 SQL Server 2000 升级到 SQL Server 2005 后可能会出现一些性能问题。如果您遇到这种情况,有几个修补程序可能会有所帮助。只需搜索 SQL Server 2005 修补程序和服务器端光标。
除此之外,请务必在升级、重建索引和更新统计信息后检查数据库完整性。
我们刚刚从 2000 Ent SP4 升级到 2005 Std 64 位 SP2 后遇到了这个问题,它也是一个更强大的服务器(2 个 4 核,32GB RAM)
SELECT 查询在 2000 年花费了 2~3 秒,在 2005 年花费了 20 多分钟(但仍未完成)重新构建所有索引,sp_updatestats,结果相同。很奇怪,除了 NOLOCK 没有使用任何索引提示 虽然 2005 机器上的数据库仍然处于 8.0 兼容模式
在我们测试时恢复到另一个 2005 年的盒子
确保您正在运行的查询和存储过程没有使用任何索引提示。就像其他人提到的那样,优化器在 2000 年和 2005 年之间发生了变化,因此这些提示可能不再有用。
此外,如果所有其他方法都失败了,则在 SP2 累积更新 6 中解决的 2005 优化器中存在一个错误(并且需要应用 2 个跟踪标志)。
你没有说你正在运行哪个版本。
但是,如果您刚刚从 2000 标准版或企业版转移到 2005 快捷版;Express 版仅使用一个处理器。我只是上周发生了这种情况;我的一个查询从本来就很慢的 1.5 秒变成了 55 秒!我运行了查询计划,唯一的区别是并行操作。无法相信速度差异。