BSS系统出帐性能提升.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
BSS系统出帐性能提升

BSS系统出帐性能提升   摘 要: 以新疆联通BSS系统计费出账工作性能优化为背景,阐述ORACLE数据库的性能优化原则,并通过实例介绍常用的性能优化方法。   关键词: ORACLE;优化;性能   中图分类号:TN915.09 文献标识码:A 文章编号:1671-7597(2011)0910035-01      1 绪论   长期以来,出帐速度慢始终是困扰BSS系统的一大顽疾,每月1日凌晨2点开始运行的出帐计算过程,待扣帐工作完成往往已经到了次日凌晨。   而出帐速度慢这个问题又间接导致了以下几个问题:   1)各类财务报表生成时间晚。   2)每月初两天的营业性能较差。   3)信控停机机制关闭的时间过长。   基于以上背景,我们对出帐计算的程序性能进行了分析和优化。   2 优化目标和原则   2.1 优化目标   时间指标:将出帐计算(不含扣帐)的绝对时间压缩到4小时之内。   2.2 优化原则   1)遵循2-8法则。出帐计算涉及到的范围很广,若进行全面优化不仅工作量大,且易发生错误。为此,必须集中精力解决重点瓶颈问题,这样才能做到事半功倍。   2)重点对应用系统进行优化。实践证明,多数性能问题,都源于拙劣的应用程序。为此,本次出帐优化工作仅针对应用系统进行调整,而不在数据库级和实例级进行优化。   3)尽量采用简单、成熟的技术。出帐工作的重要性要求我们所做的任何操作都要非常安全可靠,因此,必须采用成熟、简单的数据库技术来进行优化操作。   3 确定需要优化的对象和性能问题突出的核心语句   3.1 寻找存在性能瓶颈的应用程序   月租和优惠计算是整个出帐过程中耗时最多的两个步骤,因此,本次优化的主攻目标就确定为“月租计算”和“优惠计算”的数据库过程。   3.2 寻找核心的影响性能的语句   在确定了主攻的优化对象之后,接下来的任务就是对这些过程做进一步地分析,找到导致速度慢的核心语句,这一过程我们利用了以下三种手段:   1)熟悉应用系统的开发专家阅读分析出账程序源代码;   2)DBA人工观察和分析;   3)使用ORACLE提供的StatsPack包收集信息。   通过以上方法,我们找到了在出帐时执行最频繁、执行时间最长的语句:   SELECT * FROM GATHER_FEE_T A,   FAVOUR_SET _T B, FAVOUR _CONTENT_T C   WHERE A.user_id = in_user_id   AND B.fee_kind = A.fee_kind   AND B.fee_id = C.kind_id   AND C.vari_id = in_vari_id;   4 优化采用的主要技术手段   4.1 清理数据减少扫描量   归根结底,数据库系统的性能与数据扫描量的多少有直接的关系,只要把扫描量降下来了,性能就一定可以得到提升。而降低扫描量的最有效、最直接的办法,就是对数据进行清理。   本次出帐优化在以下两方面做了数据清理工作:   1)清理无用的历史数据,降低整体扫描的数量级;   2)对表和索引进行重整,以减少数据库碎片。   4.2 使用实体化视图(MV)减少关联查询   上述出帐计算的核心语句,之所以运行的慢,是因为临时从多表去关联查询所致。为获得性能的提升,我们采用了“以空间换取时间”的思路,使用实体化视图(Materialized view,以下简称MV),在不改变业务逻辑的基础上,减少表的临时关联:   首先将这条语句中的表B和表C的关联关系通过MV建立起来,如下:   create materialized view ww_favour_ content   refresh fast on commit disable query rewrite as   Selectb.fee_id,b.fee_kind,b.fee_position,c.vari_id,b.row   Id b_rowid,c.rowid c_rowid    from favour_set__t b,bf_favour_content_t c    where b.fee_id=c.kind_id;   然后将关联方式修改为表A和MV的关联,即:   SELECT * FROM ww_favour_content b,gather_fee_t a    WHERE A.user_id=in_user_Id    AND B.fee_kind=A.fee_kind    AND b.vari_id=in_vari_id;   经此修改,执行效率极大地提高,耗时减少

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档