dba的作用
创新性应用:
对应用系统架构的优化也是需要
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
必须每天都关注性能问题,优化是一个长期持续的过程,最终目标都是为了发挥出系统的最大能量
转载于:https://blog.51cto.com/zhaizhenxing/134913