创新性应用:

 对应用系统架构的优化也是需要 dba 参与其中,举个例子,很多时候我们可以在数据库前面做一层 cache 服务器,保存已经被访问过的页面或者 java 对象,这个工作将由开发人员去完成, dba 可以提供访问最频繁的语句,访问最频繁的对象,然后由开发人员通过程序实现 cache 这些东西,当应用请求进来,先去 cache 服务器访问,如果需要访问的页面或对象在 cache 服务器上已经存在,那么将不需要请求数据库,这样的话数据库的压力会减少非常大,由于 cache 服务器基本上是由 pc sever cluster 组成,横向可扩展性比较强而且价格比较便宜,所以当企业发展到一定规模后可以考虑从应用层上添加 cache 层而不是急于去升级数据库硬件, dba 要有这个意识,要能挖掘一切能优化的地方,换个角度去想新方法,新思路,不仅仅局限于数据库本身的优化。

 

行业借鉴经验:

主 机方面的优化会从硬件选型开始,我们需要确定我们的系统目标容量是什么,需要采购什么硬件能够支撑这个容量,要有可量化的指标,有了可量化的指标后我们可 以通过测试得出什么机器能满足性能,最后要综合成本考虑,选定一款能符合目标容量并且性价比最高的机器。由于硬件的升级换代非常迅速,一般 2 年时间就有新一代主机推出,所以在选择机器的时候只选够用的机器而不去追求一次采购到位,任何高端的机器 2 年过后必然被更高端的机器所代替。一般来说在企业发展的初期,采用 LINUX pc server 是最优化的方案,相比较 windows 系统, linux 系统的长时间运行的稳定性更强,与 unix 系统相比, linux 又体现了经济性。在企业的业务迅速发展后,对系统可用性更高的情况下,我们需要考虑采用 UNIX 系统的服务器,采用各种高可用方案保证系统的稳定性,为业务发展提供支撑。当系统搭建完毕,我们需要把注意力回到主机和操作系统上,对系统的运行状态持续跟踪,对系统的瓶颈进行优化。

最后说到流程优化,需要有一套完善的体系保证数据库系统的稳定快速运行。从设备选型开始,需要组织一个选型团队,把设备选型当作一个项目在做,需要有 DBA SA , 测试工程师,开发人员很多人员组成一个项目团队,需要有 PM 来负责监督整个项目。 DBA 负责数据的准备,测试系统的搭建,测试工程师负责编写测试用例,开发人员负责整理搭建和配置 application server,PM 协调整个项目的资源和控制项目时间。测试完毕采购完成, DBA 要做为 PM 制定系统升级方案,也是要控制好项目的资源和时间安排,做好和各个相关部门的沟通。硬件上线后需要有测试流程保证程序员开发的应用没有 sql 方面的问题,只有测试通过才能上线系统。应用发布后 DBA 要收集有问题的 sql ,返回给程序员修改这些 sql 语句,同时针对这些 sql 对开发人员做阶段性的 sql 知识培训。 DBA 团队内部也要建立起培训体系,力求整个 DBA TEAM 能分享业务知识,提高全体 DBA 的技术水平。我们所做的这些事情目的都是为了使数据库系统能实现最优化,利用流程规范少犯错,少走弯路,使用最少的资源获得最大的效果。

 

应用难点技巧:

数据库上的优化 DBA 首先要做的是找到一种阶段化的优化手段,一般来说针对数据库优化都会经过下列步骤

1.   设定优化目标

2.   记录当前性能

3.   寻找当前瓶颈

4.   优化瓶颈所在

5.   实施优化策略

6.   测量并记录优化后的性能

7.   重复步骤 3 6 直到达到优化目标为止。

一般来说在企业里面优化目标基本会跟数据库的吞吐量,数据库请求响应时间挂钩。在确定优化目标后,我们可以去查看当前性能,查看数据库性能监控报表,查看数据库的等待事件,查看 top n sql ,联合操作系统上的性能报表一起定位到瓶颈,然后对这些瓶颈做出相应的优化,再比较优化前后性能的差别,反复这个过程,最终达到优化目标。因为企业的应用系统可能天天在变化, dba 必须每天都关注性能问题,优化是一个长期持续的过程,最终目标都是为了发挥出系统的最大能量