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