DBA在系统设计、开发中的重要性

DBA在系统设计、开发中的重要性,第1张

DBA在系统设计、开发中的重要性,第2张

很多应用系统的性能或稳定性并不理想,这逐渐成为系统上线不久后的棘手问题。出现这些问题的原因往往反映了一点:开发设计这些系统的人对数据库本身了解不多!而且DBA不懂业务!这导致了许多可以避免的问题;另一方面,随着数据库自我调整和管理的能力不断加强,应用往往是系统性能的杀手,DBA的工作范围从只负责数据库服务器维护逐渐走向管理应用系统的设计和开发是必然趋势!

一、现阶段DBA对系统性能和稳定性的调整

目前DBA对系统性能的调整大致如下:

1.硬件层面的调优,这通常意味着直接花钱,买设备,扩容。

2.在DB级别进行优化,比如调整初始化参数和数据库的物理结构。

3.优化应用的SQL,比如分析数据库中的statspack,调整Top SQL。

4.只有极少数的应用,通常是一些对系统稳定性要求很高的公司的应用,才会在新应用上线之前让DBA对sql进行全面的审核和评估。

问题:在应用系统的分析、设计和开发阶段,就目前的情况来看,很少有DBA参与。但是在应用系统上线或者开发工作基本完成之后,DBA能做的调优工作其实是非常有限的。

第二,很多应用系统的性能或稳定性仍然不理想。

很多应用系统的性能并不理想,或者系统数据中存在一些难以重现的奇怪错误。这些问题(尤其是性能问题)有时并不会在系统初期体现出来,而是随着系统的运行和数据的增加而逐渐变得难以解决,给系统后期的功能扩展和用户使用带来了很多麻烦。出现这些问题的原因是开发设计这些系统的人不懂数据库!以基于Oracle的应用为例,简要说明:

底层数据结构不合理。

由于缺乏专业DBA的辅助,很多系统设计的底层数据库表结构存在很多问题。而做过系统的人都知道,底层数据库结构不合理会带来几乎等于一次重建的重建成本!我见过一个OLTP系统,它的核心表有100个字段,平均记录超过8K。如果Oracle默认一个块是8K,那么必须链接一半以上的行!

最糟糕的是,设计这种表结构的人认为他已经充分利用了冗余来减少表之间的联系。其实他也不知道什么是范式,什么是更新异常。按照正常形式,这个表要拆分成两个表,但是要改的话几乎所有程序都要改!虽然范式不是越高越好,但绝对是设计师必须要彻底理解的东西。至于冗余,相信大部分DBA都认为级联更新的成本很高,所以冗余应该避免级联更新。在关系数据库设计中使用冗余绝不是一项容易掌握的技能。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » DBA在系统设计、开发中的重要性

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情