javascript和JQuery焦点图和代码特效大全
当前最流行的开源CMS网站系统大全
当前位置:主页 > 数据库 > 数据库技巧 >

DBA管理心得

来源:编辑:发布于:2011-07-20人围观

最近一段时间,将有大量新的数据库管理软件包涌入市场。甲骨文刚刚发布的数据库11g,承诺将为DBA提供超出DBA理解范围的新特性;微软的SQL Server 2008即将于08年2月发布,成为SQL Server 2005的继任者;Informix推出了新的“Cheetah”版本,IBM希望利用该产品夺回失去的市场份额;FileMaker公司的同名软件第9版,该厂商表示该产品已经为Web 2.0准备就绪,同时保持了良好的易用性。

新产品的功能可能相当诱人,但有经验的DBA一定明白,新版本通常具有更多特性,但这也意味着任何性能的提升,可能来自伴随数据库升级而来的昂贵的硬件升级,而不是数据库升级本身。同时,性能提升可能也是有限的,如果基本的设计缺陷或操作问题依然存在的话。

正如旅游运营商Globus公司的DBA Amy Stuemky所说:“利用硬件解决问题永远是错误的。”那么,如何在不把大笔的钱花在咨询师或新硬件上的前提下,解决数据库应用的常见问题呢?一些DBA表示,解决这样的问题需要的是一点智慧和许多汗水,以及精心选择的第三方工具。

修补不良SQL代码

对于钢铁制造企业Lone Star Steel公司的数据库与系统管理员DeWayne Treadway而言,数据库问题表现在公司的两个甲骨文数据库“整体速度缓慢”,但却不能确定其中的原因。

Treadway两年前来到这家公司时,公司的数据库在IBM AIX服务器上运行Oracle8i,其中的一台服务器是16路System p570,另一台是较老的RS/6000 M80。Treadway感到问题与SQL代码有关,这些代码是由承包商在5年前编写的,当时数据库从大型机迁移到了Unix服务器。

Lone Star Steel遇到的情况比较普遍。开源PostgreSQL数据库的开发者之一Josh Berkus就表示:“数据库应用就像是不老松。一个‘临时的一次性’应用的平均寿命长达4年,目前仍有60年代编写的代码在运行。”所以,找出问题代码并非易事。

在分析了多个数据库性能优化软件包后(包括Oracle Enterprise Manager和Quest Software的Spotlight on Oracle),Treadway选择了Confio Software公司的Ignite for Oracle。利用这款工具的“等待时间分析”特性,Treadway能够迅速确定造成数据库一半延迟的三段SQL代码。例如,Treadway能够重写Ignite确定的一段代码,使以前运行需要4分钟的一个进程只需运行10秒钟。

自从一年前开始使用Ignite后,Treadway把数据库的性能提高了30%。他说他可以通过进一步的调整,再将系统性能提高50%,不过他没有这样做,因为公司已经打算从Oracle 8i迁移到Oracle 10g R2。然而,Treadway估计通过使用Ignite,在部署新的甲骨文数据库时,他依然能够更好地测试其运行情况。

正确构建数据库支持网站

近几年,支持动态内容或电子商务网站已经成为最流行的数据库应用之一。不过, Walmart.com的前CIO Neil Day表示,绝大多数网站并不是以高效率的方式构建的。Day指出,在典型的三层Web应用架构中,数据库会承载很大的负荷。为了防止数据库出现瓶颈,DBA必须利用缓存技术和传输流的智能平衡技术,实现数据库与应用请求的隔离。

为此,Walmart.com建立了节点,每个节点由4台轻型商用PC服务器构成。Day说:“没有使用一台Cisco、Sun或EMC设备,我们使用的全是廉价的x86机器,以及其他廉价的硬件。”由于整个应用栈包括大型Walmart.com数据库,因此,每个节点都能缓存某个用户可能发出的所有传输流请求。这就大大减少了瓶颈和由此而来的延迟,并且确保用户的请求始终保持在本地。

Day说,Google采取的将搜索索引数据库复制到数万台PC服务器上来获得速度和冗余性的战略(“分片”方法),就是与他们的方法类似且不太复杂的版本。不过,“分片”并不适合用于媒体内容网站和像Walmart.com这样的电子商务网站。因为,Walmart.com拥有巨大的商品目录以及数以百万的图形元素和图像,所以,拥有比Google数据库容量大得多的数据库。

Day并不愿透露更多细节。不过他说,“利用目前的战略,尽管我们运行在价值两百万美元的硬件上,但Walmart.com仍能够成为世界上最大的电子商务网站之一。”

对于对Walmart.com的方法感兴趣但又不想重建基础设施的DBA,Day的建议是,不妨考虑采用前Walmart.com首席设计师Ari Zilka开发的Terracotta公司的开源Java群集软件。他说:“Terracota为应用中使用的数据提供真正高级、智能的缓存。重要的是,它找到了如何让缓存无缝地在应用层之下的代码中运行的方法,使缓存能够透明地工作。”

当升级出现问题时

对Globus公司的资深DBA Amy Stuemky来说,数据库瓶颈出现在公司的关键任务网站中。Stuemky说:“网站常常会瘫痪,没人知道原因。我们不知道是数据库的问题、Web服务器的问题,还是应用造成的。”

Globus拥有50个从版本8到版本10g的甲骨文数据库,以及30个微软SQL Server 2000数据库。而Stuemky是唯一的DBA。这就使Stuemky很难把更多时间用在寻找网站中到底哪里出现了问题上。旅行代理和越来越多的消费者都在通过这个网站预订旅游行程。

Stuemky甚至做了她不知道是否有效的事情,就是给SQL Server数据库添加了两个额外的CPU。

Globus最终也选择了Confio的Ignite。Stuemky表示,Ignite的表现优于SQL Server内置的性能监测工具。把Ignite安装在客户端后,一天内就返回了数据库诊断结果:SQL Server存在一个“巨大的锁定问题”。有了这些数据后,Stuemky就能够从微软支持人员那里获得一个Hotfix补丁。

修改业务流程而不是数据库

简单调整公司的业务流程常常能比技术修补带来更大的回报。据Orapub公司前甲骨文优化的独立数据库咨询师Craig Shallahamer说,实际上,一些操作,比如调整SQL代码,常常只会将瓶颈由一个地方转移到另一个地方。相比之下,减少数据库工作负载或重新平衡工作负载可以取得更大的成效。

那么,为什么很少有人会采取这种方法呢?Shallahamer说,这个问题属于典型的DBA的性格问题:即内向和偏爱解决问题。Shallahamer回忆与一位DBA一起工作的经历。这位DBA管理的甲骨文系统在月底高峰期“变得不堪重负”。这位DBA提到了有一些每秒都在运行的SQL语句,这些SQL语句组成传递应用的一部分。他说:“我问他是否有什么办法把这些SQL语句的运行频率减少到1分钟运行一次。他说他首先要与用户协商。用户说:‘噢,没问题。’因此,这实际上全取决于你如何提出问题。”

他说,DBA还“常常感到没有足够的能力去推动流程改造。”Shallahamer说,正如前面提到的例子所证明的那样,这也是一种误解。DBA可以得到他们“创造令人惊奇案例”所需要的全部信息(例如工作负载的分布情况等)。

【相关文章】

DBA的工作列表上写了些什么一名合格的DBA应遵守的四个生存守则怎样成长为一个真正的Oracle DBA


与相关的文章
有时间的话来看看IT界的突发事件