公司有个生产系统用的是Sqlserver 2008 R2,用了大概4年了,现在数据库150G。正常查询都没有问题,但是在导出一个月的数据的报表时异常缓慢。
看过执行计划,数据库的索引没问题。
之前导出报表速度也不快,还能接受。但是最近这1,2个月实在是太慢了
有什么办法可以解决这种问题
这种事情,出个几千几万的找个高手帮忙啊。
这样能解决啥?
大叔的回答越来越剑走偏锋
@+小马哥++:
你都说了,
这儿没问题,那儿没问题。
也就是说有你不知道的问题了,
你的服务器啥配置不知道
你的SQL版本啥不知道
你的导出咋导出的不知道,
你的数据库是否有分区不知道,
没法整啊,这东西真的看,也许很..,也许很高端。
人总是寄希望于有人说两句话就解决一个大问题,我也想啊。
内存、硬盘、CPU到底哪个是瓶颈?都不知道,只能说一些泛泛而谈的方案了。
这没有用的。
要是有认识的朋友,叫上帮忙看看,也许一起吃顿饭的事,
要是可以,包个500、1000的也行。关键看你能做多大的主了。
以前帮看数据库,不过10来分钟解决,晚上开车去的
又不是我的事,我又不急的。谁急谁买单的啊。
你要是不急的话,就慢慢研究个一年半载总能研究出来的。
最好能提供一下导出所使用的SQL
解决建议:
1. 正确的创建索引
2. 优化报表语句
对于select 语句,定义的变量 尽可能的优化
3. 为报表创建视图
4.尝试数据切割
将一段时间内的数据 单独放一个库,这样就有多个历史库 和一个当前数据库
1、将过期的数据归档,减少生产数据量;
2、改变查询策略,比如将一个月的数据分解,按每3天或每1天导出,最后再聚合汇总;
3、表按照时间分区
4、将表数据拆分(分表),但是业务逻辑会变得恶心,需要自己改进DAL
1.切分历史数据和当前数据
2.却分汇总数据和详细数据