运行procedure很慢但运行procedure内容很快

问题描述:

有一次在发布系统到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)

相关推荐

  • win10系统运行慢很卡如何改善

    今天给大家介绍一下win10系统运行慢很卡如何改善的具体操作步骤.1. 选择系统自带的恢复功能即可解决,首先打开电脑上的Windows 设置窗口,然后找到更新和安全选项,点击2. 在打开的页面,左侧点 ...

  • 为何电脑配置很高但运行软件很卡

    很多人问为什么有时候明明电脑配置很高但却运行软件很卡,其实原因很简单,看完这篇你就知道问题出在哪了. 操作方法 01 第一个就是系统,因为现在win10的出现,许多的用户都换上了win10的系统,然而 ...

  • AutoCAD运行绘图很卡,怎么办?

    AutoCAD是一款办公常用软件,但是办公电脑的配置经常会很低,运行绘图很卡怎么解决卡顿问题呢?怎么开启硬件加速呢? 选择独显运行 01 右击电脑桌面空白处,点击显卡控制面板. 02 在管理3D设置里 ...

  • XP电脑很卡和运行很慢怎么处理

    今天小编要和大家分享的是XP电脑很卡和运行很慢怎么处理,希望能够帮助到大家. 操作方法 01 首先在我们的电脑桌面上找到电脑管家并点击它,如下图所示. 02 然后点击电脑加速,如下图所示. 03 接着 ...

  • 电脑运行慢很卡是什么问题

    电脑用久了之后难免会出现一些问题与故障.下面,我们来看看电脑运行慢很卡是什么问题吧. 操作方法 01 桌面图标 如果电脑的桌面图片太多的话,那么电脑的运行速度也会有所下降,因此,可以将这些桌面图片删除 ...

  • Win10系统无法运行批处理文件怎么办 Win10无法运行绿化批处理文件的解决方法

    为了节省更多时间,很多win10系统用户都喜欢下载绿化版或破解版软件.不过,用户在Win10正式版系统中,双击运行绿化批处理文件时,却出现了无效的情况,且提示:请以“管理员身份运行”,该怎么办呢?下面 ...

  • WinXP怎么运行Chkdsk命令 WinXP系统运行Chkdsk命令的方法

    在WinXP系统中,Chkdsk的全称就是Checkdisk,这个也就是磁盘检查的意思.如果WinXP系统的硬盘或U盘出错时,那么就可以使用Chkdsk命令来修复一些硬盘和U盘存储不了数据的问题.那么 ...

  • win7的运行在哪,win7运行命令快捷键是什么

    win7的运行在哪,win7运行命令快捷键是什么.很多人发现在win7系统上的电脑开始菜单里找不到运行选项,下面我就来说下win7的运行在哪,win7运行命令快捷键是什么. win7运行命令快捷键 0 ...

  • win10用cmd可以运行java,却不能运行javac

    配置java环境教程相当多,这里也不一一举例说明了,主要是JAVA环境变量JAVA_HOME.CLASSPATH.PATH配置,那么对于win10,配置好却只能运行java,却不能运行javac是什么 ...