DBA在系统设计、研发中的重要性
2008-02-23 07:37:05来源:互联网 阅读 ()
许多应用系统的性能或稳定性并不理想,这在系统上线后不久就逐渐变为棘手的问题,造成这些问题的原因,往往体现了一点:研发设计这些系统的人,对数据库本身不是很了解!而DBA又不了解业务!这就导致了很多本来能够避免的问题产生;另一方面,随着数据库自我调整、管理的能力不断加强,而应用又往往是系统性能最大的杀手,所以,DBA的工作范畴,从只负责数据库服务器维护,逐步走向管理应用系统的设计、研发,是必然的趋势!
一、 现阶段DBA对系统性能及稳定性所做的调整工作
现在DBA对系统性能的调整工作大致是这么几个方面:
1、 在硬件层面进行调优,这通常就是直接花钱,买设备、扩容。
2、 在DB层面进行调优,比如调整初始化参数,调整数据库物理结构。
3、 对应用的SQL进行优化,比如在数据库分析statspack,调整Top SQL。
4、 只有很少数的,通常是对系统稳定需要较高的一些公司的应用,才会在新的应用上线前,让DBA对sql进行充分的审核和评估。
问题:在应用系统的分析、设计、研发阶段,就现在情况看,很少有DBA参和,而应用系统上线或研发工作基本结束后,DBA所能做的调优工作其实是很有限的。
二、 许多应用系统的性能或稳定性仍不理想
许多应用系统的性能并不理想,或系统数据会出现一些难以重现的奇怪的错误,这些问题(尤其是性能问题)有时并不是在系统初期就会体现出来,但是随着系统的运行、数据的增多而逐步变得难以解决,给系统后期的功能扩展和用户使用上带来了不少麻烦,造成这些问题的原因,往往体现了一点:研发、设计这些系统的人不了解数据库!以基于Oracle的应用为例,简要举例说明:
底层数据结构不合理
由于缺少专业DBA的协助,很多系统设计出来的底层数据库表结构问题重重。而做过系统的人都知道,底层数据库结构不合理,带来的改造代价之大几乎等于一次重构!我见过一个OLTP系统,其核心表竟有100个字段,平均一条记录超过8K,假如按Oracle默认的8K一个Block,一半以上的行必须产生行链接!
而最糟糕的是,设计这样表结构的人还认为自己充分利用了冗余来降低表之间的连接,事实上,其人根本不晓得什么是范式、什么是更新异常,按照范式,这个表应该拆分为两个表的,但假如要改几乎任何的程式都要改!虽然范式不是越高越好,但绝对是设计的人必须吃透的一个东西。在冗余上,相信大多数DBA都认为,级联更新的代价是很高的,因此冗余应当避免发生级联更新的情况,对于关系型数据库设计中冗余的使用,绝不是门很容易掌控的技巧。
不合理的底层数据库结构设计,给系统的性能埋下了重磅的定时炸弹,这个系统在客户那里跑不到一年,数据量稍微上去些,性能、稳定性就直线下降,而重构的成本又极高,买新服务器肯定是只能治标。而假如底层数据表结构是资深DBA设计的又会如何?当然,假如完全让DBA去做数据库表结构的设计,DBA就必须很清楚地了解整个系统的业务细节信息,这在DBA来说,人力资源上是有一定困难的,毕竟维护好线上服务器就已占用了DBA很多的资源,并且领导们通常更看重这点。
很少有领导能认识到DBA在系统研发设计中所起到的作用,和维护线上系统、处理DB故障相比,对整个系统的稳定性和性能,是同样重要的!
SQL性能问题
系统的研发,通常和DBA是没有什么关系的,但是,假如DBA对系统有足够的了解,这时候也是能够做不少贡献的。比如,检查系统业务的数据流是否正确,这个需要通过一些手段,比如sqltrace、10046等,周详对系统的逻辑实现进行检查,一方面查出系统中过于消耗资源的或编写不规范的SQL及时进行调整优化,另一方面,查出系统中不合理的数据库访问,不要到了线上才发现问题,那时可能已宕机了。简单举个例子,当一个页面需要多处显示商品的类目列表时,程式往往容易犯一个错误,就是多次以同样的SQL读取出同样的数据,并应用于每一个列表显示上,假如您只读取一次,或干脆在Web层进行cache(要有适当的刷新策略),就能够大大减少单次访问该页面在DB上的I/O消耗。有时甚至会检查出根本无需被执行的SQL,也在这些和自己毫不相干的功能中频繁地执行着……同时,对数据流的检查还能够查出一些隐藏得较深的系统Bug,这个更需要基于DBA对业务细节的了解。
谁说DBA只会花钱?假如一个服务器I/O负载达到极限,大多数人只能选择扩容,最多重构部分功能来作些优化,而从statspack往往能够看出,系统的I/O资源多数是被一些并不该如此频繁执行的SQL给占用了,他们单次执行并不慢,但占用系统资源比例却异常高,这些问题,细化在每一个业务中,对这些问题的检查和数据流优化,就是对系统资源的最大节省,就是省钱!这个工作,或许只有DBA才能称职。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: 优化MySQL数据库查询的三种方法简介
下一篇: MySQL数据库在网络安全面的功能
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash