《应用系统生命周期和Oracle数据库优化》

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

应用系统生命周期和OracleOracleOracleOracle数据库优化深圳九鼎云州新创科技有限公司徐戟Oracle数据库优化是Oracle管理工作中的最重要和最复杂的工作之一。由于数据库不是孤立的数据库,而是和一些应用具有紧密关系的,数据库往往是应用系统中最关键的部分,因此数据库的优化不能完全脱离应用而进行。实践证明,数据库管理维护人员与应用开发者的合作越好,数据库的优化越成功。另外,数据库优化是从应用系统开始规划到应用系统退役整个过程中都在不断进行的,因此,数据库优化是一个长期的工作。很多用户会希望通过一次优化就达到一劳永逸的效果,而没有树立数据库优化工作长期性的观念,这样往往会导致数据库在长期的系统运行过程中没有得到必要的维护,以至于一旦发生问题,将会造成很大的损失。很多人认为数据库优化是系统投入使用后DBA的主要工作,其实数据库优化是一个贯穿于应用系统整个生命周期的长期工作,数据库优化应该从需求调研和需求分析开始。从另一个方面讲,数据库优化也不仅仅是DBA的工作,而是需要全员参与的(业务人员、开发人员、DBA甚至项目和用户的领导层)。数据库优化需要全员参与和贯穿整个开发过程,很多没有应用开发经验的DBA可能很难理解这一点,而这一点是数据库优化工作中最关键的一点。比如说,具有丰富开发经验的项目管理者都清楚,改变用户的操作习惯是一种十分困难的事情,而在用户没有形成习惯之前灌输一种操作方法要容易的多。因此在需求调研的时候说服用户不要使用那些对数据库开销十分大的操作方式,可以大大减少用户不适当操作而引起的对系统的开销。在需求调研和分析阶段要实现这一点,仅仅依靠应用开发人员是不够的,这就要求DBA或者有数据库优化经验的开发者在这个阶段就介入系统的开发工作,在必要的时候,甚至需要得到高层领导的支持。在软件开发和应用的各个阶段中,应该注意以下的问题:在需求开发阶段,数据库优化的目的是说服业务人员接受对数据库影响比较小的操作习惯,而放弃那些多数据库性能有致命影响的操作习惯在系统应用架构设计阶段,采用对数据库优化比较有利的应用体系架构。采用2层还是三层架构,使用B/S方式还是C/S方式,采用瘦客户端还是胖客户端,客户端和服务器之间数据交换的报文的格式和内容组织方式等都会影响数据库访问的性能在系统逻辑设计阶段,定义合理的数据结构和数据操作方式在物理设计阶段,设计合理的表和索引的物理存储结构在编码阶段,编写效率比较高的SQL和PL/SQL在系统测试阶段,对于关键业务进行完整的压力测试和系统性能评估,找出系统的瓶颈,尽快改进应用在系统试运行阶段,DBA实时监控数据库的情况,及时发现数据库存在的问题,及时进行调整。对于应用中存在的性能问题,及时发现,并及时通知开发人员改进,并对改进后的应用进行测试评估在系统运行阶段:系统投入正式运行后,数据库的优化工作还是十分艰巨的工作。DBA需要定期对数据库进行分析,找出目前系统消耗资源最大的对象,并找出改进的方法,进行改进。DBA还需要定期进行行链消除、索引重建、表空间碎片整理、历史数据备份整理和系统分析等工作需求开发阶段的数据库优化需求开发分为客户需求获取、需求分析两个阶段,最终产品为软件需求规格书(SRS)。在传统的概念中,这个需求开发和数据库优化是风马牛不相及的事情,而这个阶段往往是对系统性能优化最为关键的阶段。在这个阶段主要考虑的是软件的功能需求,而这些需求中,可能存在一些对系统性能影响极大的需求。操作习惯、界面风格、统计方法等都会影响数据库的性能。以下是一个真实的案例,某个系统在显示主菜单的时候,需要显示一些复杂的实时统计分析结果,而这个统计分析结果只有很少数的人会真正关心,由于这个系统有几百个用户在使用,而主菜单是进入每个模块的必经之路,因此系统运行一段时间后,就出现了CPU方面的瓶颈。为了解决这个问题,DBA想尽了一切方法对SQL进行优化,但是收效甚微。最后深圳九鼎云州新创科技有限公司的优化专家提出了一个方案,重新修改了主菜单的界面,缺省情况下不显示实时统计结果,而只是提供一个显示实时统计结果的链接。而对于需要每次显示主菜单都显示实时统计结果的用户,只需要在自己的PROFILE中设置该选项就可以了。主菜单修改后,使用实时统计的用户只有1%左右,CPU的瓶颈问题也就迎刃而解了。上述这种优化如果在需求分析阶段就能够完成,那么可以避免很多问题,而事实上类似的故事在不停的重演。究其原因,主要是参与需求开发的人员往往是业务人员和软件开发人员,这些人员缺乏数据库优化的基本知识和经验,无法从需求中发现隐含的性能问题。因此在需求开发阶段,专业的数据库优化人员的介入是十分重要的,具有数据库优化经验和软件开发经验的DBA可以在这个阶段就及时发现对于性能影响较大的需求,并且寻求解决方案,引导客户采用比较优化的操作模式。因此在需求开发阶段,“需求性能分析服务”是十分关键的服务。需求性能分析服务是一种项目前期咨询服务,在需求获取阶段或者需求设计阶段,都可以使用。但是在不同的阶段,对服务提供者的要求不同。能够在需求获取阶段提供咨询服务的服务提供者,需要既是Oracle的专家,又是应用开发的专家,同时还是业务方面的专家。对于在需求设计阶段的咨询服务提供者,在业务方面的要求略低。咨询专家可以针对客户需求,从数据库性能的角度进行分析,对可能严重影响数据库性能的需求,提出解决方案,甚至否决需求。咨询专家的介入,会提高需求阶段的工程质量,为整个工程的最终顺利实施提供保障。系统设计阶段的数据库优化系统设计阶段包括系统架构设计、逻辑设计、物理设计等子阶段。系统架构对于数据库的性能影响也是十分巨大的,采用不同的系统架构,对后续的设计和应用开发都具有十分大的影响,不合理的系统架构甚至会造成项目的失败。架构设计人员往往缺乏数据库优化方面的经验,他们设计架构的原则是根据业务和应用软件开发来制定的,因此往往仅仅考虑了业务的拓展性以及应用开发的可控性,而过于灵活的应用架构可能会最终导致严重的性能问题,甚至导致项目失败。加拿大某公司的供应链管理系统是全球排名前10名的供应链管理系统,在中小型供应链管理系统中,十分具有竞争力。但是由于其架构方面的原因,在大型企业和超大型企业中,一直无法得到很好的应用,其主要原因是架构方面局限性,导致了在并发量较大的环境下,产生了严重的性能瓶颈。而这种性能瓶颈是无法调优的,除非重新构造整个系统。在逻辑设计阶段,需要进行数据模型的逻辑建模。作为一个具有十分丰富的逻辑设计经验的系统设计师来说,创建一套完美的符合第三范式的逻辑模型不是什么难事。但是从数据库的性能角度来考虑,第三范式不一定是最佳的选择,有时候为了避免性能问题,设计一定的冗余数据,也是十分必要的。不幸的是系统设计师往往都不具有足够的数据库优化经验,因此在这个阶段也存在形成性能瓶颈的风险。在物理设计阶段,需要对数据库进行物理建模。物理建模是决定系统性能的关键,IO负载如何均衡、如何避免行链、如何避免表空间碎片、如何创建合理的索引,等等,都需要在这个阶段设计完成。在这个阶段需要经验十分丰富的OracleDBA和系统设计人员共同来完成。而事实上,在这个阶段,往往缺乏有经验的DBA参与,普通应用软件开发商的DBA是无法胜任这项工作的。由于系统设计阶段对最终系统的性能影响如此巨大,因此在系统设计阶段需要一种综合性的咨询服务,也就是我们常说的“系统模型优化服务”。系统模型优化服务是一种综合性的服务,服务提供商需要对应用体系架构、逻辑模型、物理模型进行综合的分析,找出性能瓶颈,并根据系统要求,提出解决方案。为了更好的进行系统设计,系统模型优化服务应该贯穿系统设计的全过程,包括:数据库性能优化与系统设计培训课程应用系统架构设计评审应用系统逻辑模型评审应用系统物理模型评审软件开发阶段的数据库优化如果在需求和设计阶段避免了各种性能瓶颈,那么应用软件开发阶段的性能优化工作就会轻松很多。但是由于软件开发阶段涉及的人员较多,并且每个开发人员的能力有所不同,因此在这个阶段也是容易造成性能问题扩散的主要阶段。这个阶段产生的性能问题往往是分散的,集中于某些不够优化的SQL代码。其修复的代价也低于前面两个阶段。在应用软件开发阶段,“应用开发性能优化套餐”可以帮助应用开发商避免性能问题,套餐内容包括:SQL与数据库性能培训课程PL/SQL性能优化培训课程专职DBA服务专职DBA服务的主要内容是派遣专职的DBA参与开发,该DBA的主要任务是帮助开发人员分析SQL的性能并协助进行SQL优化。专职DBA的另外一个职能是对大型SQL进行审核,没有通过审核的SQL必须在开发阶段进行优化改造。有了专职DBA的参与,可以在开发阶段减少大量的性能瓶颈。系统测试阶段的数据库优化如果在前面的各个阶段,都已经对数据库的性能进行了优化,那么系统测试阶段是解决遗留系统性能问题的最佳阶段,由于系统开发已经完成,因此集成测试和系统测试成为可能,很多在系统测试阶段才可能暴露出来的性能问题可以得到充分的暴露,而且由于系统还没有正式上线,因此系统调整和优化的代价也很小。在实际情况中,测试阶段大家的主要精力都集中在解决软件BUG方面,往往忽视了对系统性能和数据库性能的测试。由于开发队伍缺乏压力测试的能力,因此压力测试往往被省略了。这些省略的后果往往就是系统上线后产生严重的性能问题。在系统测试阶段,“压力测试服务”和“系统性能评估服务”是两种十分重要的服务。压力测试服务是服务公司为客户提供的专业的测试服务,可以根据客户应用的特点,建立一套模拟的数据和模拟的业务运行环境,并在这个环境中获得第一手的系统性能参数,找到隐藏的性能瓶颈。以便于客户在上线前解决存在的性能隐患。系统性能评估服务的目的是为客户进行系统生命周期中的性能预估,可以根据目前的情况,估算几年后系统运行的情况,以及可能出现的系统瓶颈。评估报告可以让客户作出系统是否能够上线的决策。也可以使客户在系统运行生命周期内进行系统升级和扩容的规划。某移动公司在开通彩铃业务1年后,由于业务量发展十分迅速,导致系统性能出现严重的瓶颈,客户投诉大幅度上升,甚至一度暂停新业务开户,造成了重大的损失。因此,该移动公司在扩容彩铃系统的时候,聘请了九鼎云州的咨询人员,对系统进行性能评估,根据其业务发展的实际情况,对2年内系统各项指标进行估算,找出不达标的指标,要求供应商改进。在评估过程中,九鼎云州的咨询人员发现了系统中存在的大量性能隐患,及时帮助供应商解决了性能问题,该系统上线后,完全达到了移动公司的设计要求,取得了良好的效果。系统运行阶段的数据库优化系统运行阶段的数据库优化是传统意义上的数据库优化范畴的工作。当系统正式上线后,系统的优化往往受到很多的限制,因此优化的手段也较前几个阶段少,优化的成本也大大增加。在系统运行阶段,往往是由于缺乏严格的日常维护,因此很多系统性能隐患没有及时发现,等到发现问题的时候,往往已经错过了解决问题的最好时机,并且由于生产系统给与问题解决的时间有限,往往造成解决问题的时间严重不足。为了避免上述问题的出现,在系统运行阶段,加强系统日常的监控和维护是十分必要的。在这个阶段,大量的咨询服务公司提供了丰富的服务项目,九鼎云州也在长期的数据库维护工作中,和客户一起,不断完善服务的种类和内容,以满足客户日益增长的IT服务需求。以下是几种特别贴近企业级用户的服务。现场和远程在线护航服务:在系统繁忙的时段,咨询人员在现场值守,协助解决问题。比如对于电信公司,在每个月月初的几天,是出帐的繁忙期,在这几天里,很容易出现一些突发性的性能问题,如果有专业DBA在现场支持,可以降低这几天的业务风险。现场护航服务的价格较为昂贵,因此对于资金不是十分充裕的客户来说,选择远程在线护航服务是一种变通的做法,其效果和现场护航服务类似,但是可以节约大量的费用。远程离线护航服务:在线护航需要服务提供者能够连到客户的系统进行服务,由于种种原因(当然价格也是其中的因素之一),客户无法使用在线服务,那么离线的远程护航服务也是一种不错的选择。客户可以把现场采集到的数据

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功