当前位置: 代码网 > 科技>电脑基础>电脑常识 > 解决运行procedure很慢但运行procedure内容很快问题

解决运行procedure很慢但运行procedure内容很快问题

2014年02月21日 电脑常识 我要评论
解决运行procedure很慢但运行procedure内容很快问题打开procedure一段一段执行却没问题,执行整个procedure的内容也没问题,但是exec procedure_nm却始终有问题,下面有个不错的解决方法,大家可以参考下... 14-02-21
问题描述:

有一次在发布系统到production环境之后,突然发现报表过了好几分钟也刷新不出来,小哥我直接就慌神了。迅速进行各种测试,首先右键报表属性找出报表地址,看看参数是否传对了。找出报表参数之后直接运行procedure,也跑不出来。打开procedure一段一段执行却没问题,执行整个procedure的内容也没问题,但是exec procedure_nm却始终有问题。在开发环境execute procedure,也没问题。于是,开始纠结了。

环境:sql server 2008, ssrs 2008

解决过程:

仔细思考production环境和开发环境的不同,无非就是开发环境是新搭建的环境,production是已经存在好几年的环境,这次只是对其报表producdure进行了改变,并打了一个补丁修改之前半年的历史数据。后来发现这里就是引起这次事情的主要原因。通过不断的查找问题,发现了开发环境和production里面的表统计信息(在sql server里面左侧目标浏览器中展开表之后的最下面一个项目:statistics)不一样。当时只是一个猜测,大量跟新数据会引起production的统计信息过时,而sql server引擎在解析procedure的时候会根据统计信息制定一系列数据检索计划,就像以前从a市到b市有一条高速公路,现在这条高速公路没用了,sql server引擎就去寻找其他笨的方法,而统计信息的自动更新只会发生在夜深人静之时。所以便尝试着去申请手动更新production的统计信息。统计信息更新之后,报表能够正常打开了。

解决方法:

use database_nm

exec sp_updatestats

结论:

在大量更新数据之后,会使数据库的统计信息发生变化,继而影响sql server对sql的解析。需要重新更新数据库的统计信息,让sql server参考最新的正确的信息去制定执行计划。
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com