关于系统导出性能优化方案

背景

新版采购系统每天产生大量数据,数据的时间跨度2018年到2020年,数据量达到百万级别,而且SQL非常复杂。在这些数据中有大批量数据是已经完结,例如:采购单已经作废的数据,全部到货已经付款是数据。这部分数据如果继续存在采购系统中将会对系统性能产生不必要的影响。同时也处于对采购系统数据安全考虑。这部分数据将做归档处理

优势

1:解决目前采购系统大数据导出性能问题,数据归档将减少历史数据在采购系统占用的资源。从而提升系统的查询性能;

2:数据安全,定时对数据归档备份有利于保证公司采购数据的安全和完整;

3:数据分析:历史数据归档处理,当数据量达到一定量时。在说数据分析时可以保证数据的完整和及时。后期自动化分析数据做出数据层面的保证。

方案会从技术层面和架构层面对数据归档问题做出阐述


关于采购系统导出性能优化方案:


方案一:冷数据归档
    描述:对已完结的、用户不会再操作的订单数据进行归档,归档后数据不可变更,也无法操作,只能查看。
        归档的数据对业务来说展示是一样的,后台实际上是分开处理,所以归档后的数据不可恢复到原始状态。
    
    难度:困难
    性能提升:查询和导出 性能会达到持久性的提升,不会因为后期数据量增加而影响效率。
    出错概率:容易出错(不应归档的数据归档了会导致恢复困难,PHP和JAVA的开发者容易操作错误),归档数据后要删除的数据请先备份一周,以免错误删除的数据导致不能恢复,一周确认无误后即可删除。
    影响:因为采购系统逻辑耦合度非常高,对相关联的模块会有影响
        (如对采购单归档则合同单、应付款、应收款、取消未到货等都会导致数据不可展示,除非对每个页面进行归档,实际上这是不可取的)
    

方案二:数据冗余
    描述:由于当前查询链表过多,把多张表的数据保存到主表上或者增加中间表保存相关数据,以减少链表。
        当前查询有关联 13 张表查询数据,非常大的 SQL ,如果能缩减会有一定的提升。
        
    难度:困难
    性能提升:查询和导出 性能会达到短暂的提升(随着订单的增加逐渐变慢,不能根本上解决问题,后期需要维护)
    出错概率:不易出错
    影响:没有影响
    
    
方案三:分表
    描述:按年度把备货单、采购单数据分表保存、操作。
    
    难度:一般
    性能提升:查询和导出 性能会达到持久性的提升,数据增量只会对新表造成影响。
    出错概率:不会出错
    影响:适当调整,业务需要切换年份才能操作不同的年份的单据
    
    
方案四:异步导出
    描述:针对当前导出功能超时,用户点击导出操作后不会立即导出,而是提交任务由经理审核通过后,系统自动导出生成文件给用户下载。
        据统计当前采购单明细表 183 万,还远没有达到系统瓶颈,只要时间足够,异步导出 20 万条数据没问题的。
    
    难度:容易
    性能提升:对查询没有任何提升,只是针对导出(随着订单的增加逐渐变慢,不能根本上解决问题,后期需要维护)
    出错概率:不会出错
    影响:没有影响


附加:应对历史无任何作用的数据进行删除,如无效的数据等(删除前请备份)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值