Hai*_*ssa 3 sql-server-2008 php availability-groups sql-server-2014 timeout
我们的数据库有一个 SQL Server 2008R2 企业版来支持前端应用程序。我们以前从未遇到过超时问题。最近,该公司决定将数据库升级到 SQL Server 2014 企业版,其中 2 个节点始终处于群集设置。新服务器比旧服务器具有更好的 CPU、内存。
升级后我做了所有必要的修改,检查数据库一致性,运行 DBCC UPDATEUSAGE,更新统计信息,重建索引,重新编译存储过程等等。数据库切换和迁移一切顺利。但是,我们的用户开始抱怨超时问题。
我一直在查看不同的文章、博客文章并进行了一些修改,例如更改连接字符串和添加 MultiSubnetFailover = 'True',这似乎有很大帮助并最大限度地减少了超时频率,但问题仍然存在。有谁知道是什么导致了这个问题以及如何解决它?我非常感谢您提出的解决此问题的建议和建议。
基数估计逻辑已针对 SQL Server 2014 更新,这可能是一个原因。您必须使用旧的基数估计器测试相同的查询并比较性能指标。您可以通过将兼容性级别降低到 <120来做到这一点。
我会在测试服务器上而不是在生产中执行所有这些测试。
https://msdn.microsoft.com/en-us/library/dn600374(v=sql.120).aspx https://www.brentozar.com/archive/2014/04/sql-2014-cardinality-estimator-吃坏tsql早餐/
我终于找出问题所在了。经过几天的徘徊后,我检查了 SQL Server 报告,注意到临时数据库上有大量自动增长的情况。问题的原因是,在数据库迁移到新服务器后,系统数据库文件大小未配置,而 tempdb 有办法减少文件大小,使其小于应有的大小。
看起来每当 tempdb 上发生自动增长操作时,查询就会被迫回滚并导致问题。我只是更改文件大小以及文件增长大小。现在它工作起来就像一个魅力,从那以后没有任何问题。
| 归档时间: |
|
| 查看次数: |
1943 次 |
| 最近记录: |