数据库性能优化:五招让IT反败为胜前沿技术
当数据库的性能变得糟糕时,IT人员能扭转局面。
生产数据库的性能会随着业务和数据的增长而严重迟钝。每一个关键数据库性能的降低都可能会导致全面的业务损失。
从技术上讲,性能优化可以从许多不同的层次下手——应用程序可以优化,数据库可以调整,或建立新的系统架构。但是,在生产中,这些问题往往会由IT运维来解决,采取某些对系统破坏性最低的措施实现提速。
以下是IT专业人员对付性能下降问题的一些新方法:但是,必须首先达成共识:为什么应该由IT人说了算?
数据库管理员和开发人员有许多方法可以实现数据库性能调优。他们可以调整配置文件以便更好地适应数据库和底层架构条件,添加索引,执行存储过程,甚至修改架构(累个半死)!将一些表非规范化。
开发人员会显著影响使用数据库技术路线;需要处理哪些数据,如何检索这些数据都由他们决定。开发高手们会灵活运用SQL十八般武艺优化客户端查询、实现缓存,并有效控制应用程序端带宽。或者,他们重写应用程序以便用上有前途的新数据库平台,例如NoSQL的衍生品。
然而,所有类型的数据库最终都会出现一定程度的性能退化。更糟的是,许多开发人员单纯地认为,如果生产系统中有哪里变慢了,只需要让IT人员简单地添加更多的基础设施就能搞定,但这显然不是最佳的选择。
定位数据库性能问题的五种方法
1.基础设施纵向升级。投入更多的计算资源是解决问题的通常办法,但这办法实际上并不一定会让性能获得提升。即使扩充了正确的资源池,能被有效利用的资源数量仍然是有限的。对于承载于物理设备上的数据库而言,添加基础设施具有一定难度,而但虚拟或云托管的数据库则非常容易调配计算资源。
2.横向扩展。一些类似群集化MySQL的数据库是可扩展的。然而,群集的实际规模限制或对分区技术的要求影响了应用程序一致性或可靠性。群集还要求改变系统管理模式,执行新的数据保护计划。
3.激活归档。有时可以通过归档较旧的数据来保持性能。存档通常意味着一些数据不再是完全有用,但今天也有象Rainstor或Oracle内置的混合列式压缩选项可以处理静态相关数据。由于数据变得更加静态和被压缩处理,对这些归档数据的分析查询性能实际上增加了。
4.利用闪存加速。闪存是一种很受欢迎的性能解决方案。当从战略上部署时,它可以加速的远不仅仅是一个数据库。闪存加速的一大优点是,闪存对数据库系统是透明的。闪存能被用作服务器或存储缓存(例如Fusion-io)或固态驱动器,还可以放在网络中,例如Astute VisX全闪存存储。一些供应商,如PernixData,将服务器闪存汇集到自己的存储层,使得存储和服务器的界限变得模糊。闪存目前仍然非常昂贵,而且一些解决方案仅针对读取IO进行了优化,并不一定能够消除当前的数据库瓶颈。
5.数据库引擎升级。对数据库性能进行优化的一个有意思的新办法是升级数据库内部引擎。例如,对于流行的MySQL和MongoDB数据库,你可以从Tokutek找到高性能(免费、开源的)版本的内部引擎进行替换。替换数据库引擎的过程对应用程序是透明的,不需要对基础设施进行任何更改。
额外的好处是,由于数据库索引和写入数据的机制得到更新,数据库I/O操作也自然被一起优化,更充分发挥闪存的优点。
在面对关键性能退化时,IT部门常常被被迫作出缺乏可靠回报的巨额投资。为了避免在未来遇上越来越多基础设施性能问题,不妨多留心以上列出的优化选项。更好的做法是,将这些选项放到第一位来主动探讨,你将可以避免数据库性能问题。