概述
在业务数据的处理过程中,经常会遇到夜间批次处理大量的数据,而且会有时效的要求,这就对程序执行的性能有了较高要求。特别是当应用系统跑了2年以上时,就会有大表或者特大表的操作了,数据量达到百万甚至上亿。 这时回顾前期的设计,就可能会发现好多问题。 可能是由于数据模型设计的时候没有考虑表的分区和及时归档,造成大表处理慢; 也可能是涉及到的sql的设计没有考虑走索引,或有隐式转换、全表扫描、笛卡尔积等的问题;抑或是数据在处理时没有考虑及时的分批切分、外加并发处理的多线程,或者不支持可配置化等等。诸如此类都会造成任务执行时的性能问题,而架构设计关注点之一,就是考虑系统运行的程序性能问题。在此, 为了以后的设计不要走相同的错路。这里暂时简要总结一下。
1 最初要考虑归档和分区。所有可能的大表设计,都要在最初的时候考虑归档和分区。
数据冲上高水位(HighWaterMark)后,即使有归档也不会降低高水位,性能可能也存在消耗,所以要及时归档转移数据。 最好是设置分区表,这样分区表可以进行及时的truncate或者drop再重新add分区。 可以灵活的控制存储。
2 sql条件精准定位。大的关联sql查询,一定要尽量的精准抽取数据范围,不要模糊抽取过多数据,含好多无用的后面再过滤,这很可能影响数据库的执行计划判断导致性能下降。
3 快速定位数据,分批支持流水并发。大批量数据处理,首先要用最简单的方式找到目标最小集群的数据,从大范围中抽出来,并进行切分。切分的目的是可以使用多线程并发处理数据,并且隔离各分区的数据不会重复,也不能有遗漏,这样并发时不会造成数据干扰。
4 流水线并发处理提升时效。
采用3的切分多批+多线程并发的方式,就可以针对有多个步骤的业务逻辑处理时,不用瀑布模式等待执行,而是可以流水线样的多条执行,实现了多并发,无时间和空间的浪费。 对于有高时效的任务处理,具有可观的价值。
以上暂时整理,后续待补充。@20170312sz
最后
以上就是寂寞芒果为你收集整理的大数据量快速处理的架构设计的全部内容,希望文章能够帮你解决大数据量快速处理的架构设计所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复