随着网站的数据量越来越大,销售明细等相关报表的导出也就越来越慢,想问下大家都有什么好点的方法没有
WEB端点击生成还是每天固定生成
web端点击,服务器端执行代码
@qmsu: 你可以考虑事先将数据生成,点击的时候直接下载,比如定时任务或者写个系统服务专门生成
1、升级硬件
2、改造数据库、改造软件
主要就是这两点了。
服务器硬件用的是阿里云,公司预算就那些,升级的可能性不大。目前使用的方法是:1、尽量优化原来的sql;2、数据库里该加索引的都加了;3、跑定时任务脚本。所以想问下改造数据库和改造软件能具体点么
@qmsu: 关键是你自己都不具体啊。
1、数据库可以通过分区提高查询性能
2、改造软件的意思是,通常程序员写出来的软件,都有好多的改造空间,找个更好的程序员,或者不停的琢磨
哪儿可以优化,这个你提的问题这么大,没法具体啊。
3、一楼的意思是你可以平时没人点的时候,把数据先查询好,静态化,需要的时候一点就可以下载了。
很多人就会说,不行啊,我要求是动态查询的啊, 巴拉巴拉,其实没啥不行的,只要仔细想,总能行的。
4、所以的性能优化,无非就是空间换时间,金钱换时间。
5、良好的数据库设计以及软件流程设计,对于性能的改善是超过100倍的。
客户端电脑不行就在服务端导出完再下载
服务端不行就把导出放到客户端来做喽
类似 这种文件流IO操作或者WCF WEB服务调用 都可以采用 async 提高性能
可以看看:
http://www.cnblogs.com/xishuai/p/asp-net-sync-over-async.html
发现问题,先找问题在哪里, 是文件生成慢了,就修改生成方式,如用很简单的生成方式,或楼上说的定时生成,直接下载
但如果是因为业务逻辑变复杂, 导致文件生成慢了, 最好还是要优化程序的。
领还可能是网络什么的。
总之先确定哪些环境有问题,对症下药。