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

发布日期:2022-04-13 09:13:56 来源:郑州计算机学校

问题描述:

有一次在发布系统到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参考最新的正确的信息去制定执行计划。


温馨提示:内容来源于网络,仅用于学习交流,无任何商业用途,如有不妥或侵权,请告知,立删!

热门专业推荐

计算机软件应用技术

本专业主要面向机关、企业、事业、公司等应用计算机技术的相关领域,培养具有扎实的计算机专业知识、计算机网络基本应用能力,能够从事计算机办公自动化、计算机综合应用和计算机网络搭建管理,熟练掌握计算机网络构建及管理能力、计算机硬件安装与维护能力、绘图制图能力、网页设计能力,并在建筑信息设计技术方面达到一定水平的高素质技术技能型人才。

电子商务专业

本专业培养学生熟悉信息科技与技术的基本知识和方法,掌握电子商务系统工程的开发、应用与管理的技术和技能,具有创新精神、较强的管理能力和独立分析问题的能力。

计算机平面(3D)设计

本专业培养学生具有动漫设计、制作、绘画、广告设计、网页设计等技能,具备熟练计算机操作能力的技术应用型人才。

音视频剪辑(影视后期制作)

本专业培养以这个专业的培养目标是培养学生具备扎实的文学功底和通晓视听语言的能力,同时熟练掌握包括数字化技术在内的各种剪辑技术。