ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 应用系统生命周期中数据库优化

应用系统生命周期中数据库优化

原创 Linux操作系统 作者:yxyup 时间:2009-07-24 16:43:54 0 删除 编辑
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 数据库优化是数据库管理工作中的最重要和最复杂的工作之一。由于数据库不是孤立的数据库,而是和一些应用具有紧密关系的,数据库往往是应用系统中最关键的部分,因此数据库的优化不能完全脱离应用而进行。实践证明,数据库管理维护人员与应用开发者的合作越好,数据库的优化越成功。

另外,数据库优化是从应用系统开始规划到应用系统退役整个过程中都在不断进行的,因此,数据库优化是一个长期的工作。很多人会希望通过一次优化就达到一劳永逸的效果,而没有树立数据库优化工作长期性的观念,这样往往会导致数据库在长期的系统运行过程中没有得到必要的维护,以至于一旦发生问题,将会造成很大的损失。

数据库优化是一个贯穿于应用系统整个生命周期的长期工作,数据库优化应该从需求调研和需求分析开始。从另一个方面讲,数据库优化也不仅是某人某部门的工作,而是需要全员参与的(业务人员、开发人员、DBA 甚至项目和用户的领导层)。

数据库优化需要全员参与和贯穿整个开发过程,很多没有应用开发经验的DBA 可能很难理解这一点,而这一点是数据库优化工作中最关键的一点。比如说,具有丰富开发经验的项目管理者都清楚,改变用户的操作习惯是一种十分困难的事情,而在用户没有形成习惯之前灌输一种操作方法要容易的多。因此在需求调研的时候说服用户不要使用那些对数据库开销十分大的操作方式,可以大大减少用户不适当操作而引起的对系统的开销。这就要求在需求调研和分析阶段要实现这一点,在必要的时候,甚至需要得到高层领导的支持。在软件开发和应用的各个阶段中,应该注意以下的问题:

 (1) 在需求开发阶段,数据库优化的目的是说服业务人员接受对数据库影响比较小的操作习惯,而放弃那些多数据库性能有致命影响的操作习惯.

 (2) 在系统应用架构设计阶段,采用对数据库优化比较有利的应用体系架构。采用2 层还是三层架构,使用B/S 方式还是C/S 方式,采用瘦客户端还是胖客户端,客户端和服务器之间数据交换的报文的格式和内容组织方式等都会影响数据库访问的性能.

 (3) 在系统逻辑设计阶段,定义合理的数据结构和数据操作方式

 (4) 在物理设计阶段,设计合理的表和索引的物理存储结构

 (5) 在编码阶段,编写效率比较高的SQL.

 (6) 在系统测试阶段,对于关键业务进行完整的压力测试和系统性能评估,找出系统的瓶颈,尽快改进应用

 (7) 在系统运行阶段:系统投入正式运行后,数据库的优化工作还是十分艰巨的工作。DBA 实时监控数据库的情况,及时发现数据库存在的问题,及时进行调整。DBA 还需要定期进行行链消除、索引重建、表空间碎片整理、历史数据备份整理和系统分析等工作。对于应用中存在的性能问题,及时发现,并及时通知开发人员改进,并对改进后的应用进行测试评估.

 

需求开发阶段的数据库优化

需求开发分为客户需求获取、需求分析两个阶段,最终产品为软件需求规格书(SRS)。在传统的概念中,这个需求开发和数据库优化是风马牛不相及的事情,而这个阶段往往是对系统性能优化最为关键的阶段。在这个阶段主要考虑的是软件的功能需求,而这些需求中,可能存在一些对系统性能影响极大的需求。操作习惯、界面风格、统计计算方法等都会影响数据库的性能。

以下是一个曾经亲身遇到的案例,某个系统在显示主菜单的时候,需要显示一些复杂的实时统计分析结果,而这个统计分析结果只有很少数的人会真正关心,由于这个系统有几百个用户在使用,而主菜单是进入每个模块的必经之路,因此系统运行一段时间后,就出现了CPU 方面的瓶颈。为了解决这个问题,想尽了一切方法对SQL 进行优化,但是收效甚微。后来经过分析应用后提出了一个方案,重新修改了主菜单的界面,缺省情况下不显示实时统计结果,而只是提供一个显示实时统计结果的链接。而对于需要每次显示主菜单都显示实时统计结果的用户,只需要在自己的PROFILE 中设置该选项就可以了。主菜单修改后,使用实时统计的用户只有1%左右,CPU 的瓶颈问题也就迎刃而解了。

上述这种优化如果在需求分析阶段就能够完成,那么可以避免很多问题。

 

系统设计阶段的数据库优化

系统设计阶段包括系统架构设计、逻辑设计、物理设计等子阶段。系统架构对于数据库的性能影响也是十分巨大的,采用不同的系统架构,对后续的设计和应用开发都具有十分大的影响,不合理的系统架构甚至会造成项目的失败。

在逻辑设计阶段,需要进行数据模型的逻辑建模。一个具有十分丰富的逻辑设计经验的系统设计人员来说,创建一套完美的符合第三范式的逻辑模型不是什么难事。但是从数据库的性能角度来考虑,第三范式不一定是最佳的选择,有时候为了避免性能问题,设计一定的冗余数据,也是十分必要的。因此在这个阶段也存在形成性能瓶颈的风险。

在物理设计阶段,需要对数据库进行物理建模。物理建模是决定系统性能的关键,IO 负载如何均衡、如何避免行链、如何创建合理的索引,等等,都需要在这个阶段设计完成。

 

软件开发阶段的数据库优化

如果在需求和设计阶段避免了各种性能瓶颈,那么应用软件开发阶段的性能优化工作就会轻松很多。但是由于软件开发阶段涉及的人员较多,并且每个开发人员的能力有所不同,因此在这个阶段也是容易造成性能问题扩散的主要阶段。这个阶段产生的性能问题往往是分散的,集中于某些不够优化的SQL 代码。所以SQL 审核也是很有必要的工作。

 

系统测试阶段的数据库优化

如果在前面的各个阶段,都已经对数据库的性能进行了优化,那么系统测试阶段是解决遗留系统性能问题的最佳阶段,由于系统开发已经完成,因此集成测试和系统测试成为可能,很多在系统测试阶段才可能暴露出来的性能问题可以得到充分的暴露,而且由于系统还没有正式上线,因此系统调整和优化的代价也很小。

 

系统运行阶段的数据库优化

系统运行阶段的数据库优化是传统意义上的数据库优化范畴的工作。当系统正式上线后,系统的优化往往受到很多的限制,因此优化的手段也较前几个阶段少,优化的成本也大大增加。在系统运行阶段,往往是由于缺乏严格的日常维护,因此很多系统性能隐患没有及时发现,等到发现问题的时候,往往已经错过了解决问题的最好时机,并且由于生产系统给与问题解决的时间有限,往往造成解决问题的时间严重不足。为了避免上述问题的出现,在系统运行阶段,加强系统日常的监控和维护是十分必要的。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7364032/viewspace-610367/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-06

  • 博文量
    163
  • 访问量
    1320249