MSSQL环境下因报表实时刷新导致宕机问题分析

楼主
我是社区第98306位番薯,欢迎点我头像关注我哦~

在开发报表的过程中,勾选了实时刷新数据,报表自动的实时显示动态数据,导致服务器内存爆满,系统无法使用。


通过MSSQL提供的系统函数,查看内存中实时运行的语句,发现报表语句大量的刷屏,占用了较多的CPU,内存等资源。


通过如下代码可以查询数据库正在运行的比较耗费资源语句:

select top 10 text,*

from sys.sysprocesses a cross applysys.dm_exec_sql_text(a.sql_handle) st

where status<>'sleeping'

order by cpu desc


出现这些的问题后的解决建议如下:

1.增加TOMCAT的最大内存设置,

2.考虑能否降低刷新数据的频率,或者取消刷新数据

3.对获取数据的SQL语句进行优化

  3.1 首先检查下sql代码中是否有不符合sarg规范的地方,有则改

  3.2 sql代码尽量做好过滤条件,尽量用数据库参数过滤,这样可以减少查询过程中处理的数据量,从而减少硬件资源的消耗。模板参数因为要先将所有数据查询出来后再做过滤,所有耗费了很多资源。

  3.3 sql代码逻辑结构的优化

分享扩散:
参与人数 +1 F豆 +16 理由
兔子酱 + 16 感谢分享~~

查看全部评分

沙发
发表于 2017-12-5 18:07:54
板凳
发表于 2018-2-1 13:54:00
感谢分享!!!!
地板
发表于 2018-3-5 22:44:50
感谢分享
5楼
发表于 2018-3-6 01:01:22
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

4回帖数 1关注人数 8275浏览人数
最后回复于:2018-3-6 01:01

返回顶部 返回列表