- 4
- 0
- 约4.17千字
- 约 8页
- 2019-08-20 发布于江西
- 举报
论“大数据量处理性能优化”技术
作者:吴立民
关键词:数据库分区与批量处理,共享内存,二叉树,多进程,多线程。
摘 要:本文主要针对“计费系统”大批量业务与大数据量处理时,存在速度慢、处理能力低等问题,提出一系列性能优化技术,这些技术对性能优化是极其有效的,具有广泛的参考价值,保证可以大获收益。
技术背景分析
随着移动通信业务的迅速发展,移动用户数迅速膨胀,数据量越来越大。随着数据量的不断增长,移动通信业务管理信息系统的处理速度将成为系统的瓶颈,急需解决系统性能优化技术。MCM移动电话计费与营业管理信息系统已在全国近百个城市投用,目前对我们系统所存在的速度慢问题,一直未得到很好解决,用户投诉多。否则将严重影响MCM移动电话计费与营业管理信息系统进一步推广与应用。因此必须尽快解决大数据量处理时,如何来提高处理速度,如何来进行性能优化,急需解决!
影响系统处理能力的因素分析
对于一个系统来说,影响系统处理能力的因素可以分析以下,可以说主要包括以下几方面因素:
(1)所要处理的数据量,数据量越多,当然处理的时间就越长;
(2)所要处理的数据复杂性,数据处理越复杂,当然处理的时间就越长;
(3)登陆到系统的用户数,使用的人越多,系统处理速度当然就变慢;
(4)系统自身的IO能力;
(5)系统自身的CPU能力。
三、从硬件上提高系统处理能力
如何来提高系统的处理能力?可以从两方面来考虑,一方面是从硬件上来考虑提高系统的处理能力,这当然是最方便的;另一方面是从软件上来考虑提高系统的处理能力,这当然是最为麻烦的,需要更改以前程序的设计。
从硬件上考虑提高系统处理能力这也是我们在做系统集成方案时所需要考虑的,从硬件上应主要从以下几方面去考虑:
主机选型
IO能力
存储系统与存储空间
CPU数量
内存大小
网络传输速率
四、从软件上提高系统处理能力
在这里,我们需要重点讨论的是并不是通过提高硬件档次来提高系统的处理能力,而是如何通过优化软件设计来极大地提高整个系统的处理能力。其实,软件优化是无止境的,优秀的软件其性能总是比较好的。性能优化需要有丰富的软件开发经验,需要采用一些软件技术。本人经过多年潜心研究,总结出一套软件性能优化技术,可供MCM移动电话计费与营业管理信息系统与其他系统进行优化设计之用。
这些技术经过总结主要包括如下八大方面:
数据库表分区技术
大家都明白,对大表的操作,总是要比对小表操作要慢。利用数据库分区技术就是要做到对大表操作变成对小表的操作,从而来提高系统处理速度。
对表进行分区,必须提供分区关键字段,分区有多种方式:
按天分区
按月分区
按字段分区
对于复杂的分区,需要提供算法,应根据该算法算出其分区关键字段。在MCMBIS系统中,移动电话通话详单表一般应采用按天分区,若需要保存3个月的数据,就必须分为183个区。
基于按天分区以后,我们就可以做到按天处理,按天汇总与出帐。对于一天的数据量是非常小的,因此对于一天数据处理的速度将是非常快的。在天处理的基础上可以进行月处理与年处理,都会非常快。
遗憾的是:数据库表分区技术目前只局限于ORACLE8数据库,对于SYSBASE与INFORMIX等数据库都未提供数据库表分区技术。
共享内存技术
对于各种处理过程当中,总会用到许多参数表,例如:移动电话计费管理信息系统中的计费批价处理程序,需要许多参数表,如:计费规则表、长途费率表、农活费率表、优惠规则表、各种对照表等等。如果每次使用这些参数表都需要从数据库中读取,将会严重影响系统的性能与程序处理速度,系统IO瓶颈将会立即出现。
共享内存技术就是指在内存中开辟一块可任何进程所共享的内存区域,把那些需要经常访问的数据参数表一次读入到共享内存区中,以后所有对参数表的访问可以通过直接共享内存区的参数数据来实现,从而避免频繁对数据库的访问,大大减少对系统IO的占用,提高系统处理速度。
利用共享内存技术对系统性能的优化是非常明显的。
二叉树技术
读到内存当中的数据如何来存放又是一个技术问题,我们一般可以采用以下几种方案:
链表结构存放
数组结构存放
二叉树结构存放
对于链表结构可以临时申请内存,不需要预先申请内存,只要有内存可以把任何大的参数表一次读入到共享内存区中。缺点:查找数据时,需要从链表的头开始逐个向后匹配查找,直到找到为止,这样做速度一定会非常慢,对CPU的占用也比较大。但参数表数据非常小时(只有十几条记录)可以采用链表结构存放。
对于数据结构比较明显的缺点是:数组的大小是固定的,内存空间需要连续的,但参数表数据增加时,有可能会导致数组不够大,从而导致程序的错误。对于查找可以采用二分法来实现,速度也是会比较快。
对于二叉数结构有非常明显的优点,由于在内存中的数据按二叉树结构排列,查找
原创力文档

文档评论(0)