论文部分内容阅读
在当今竞争激烈的市场环境下,成本控制毫无疑问是各个企业提升竞争力非常重要的一个部分,由于众多竞争对手都能够提供同质化产品和服务,因此企业必须从控制内部成本做起,作为企业内部开销相对比较大的IT部门,首当其冲的工作就是最大化地挖掘IT系统潜力。在此过程中,数据库工程师应当引进新方法,新思路,扩展自己的视野,不仅仅局限在数据库维护本身,而应当从系统优化、应用优化、流程优化三个方面考虑增加企业投资收益。
优化系统保障业务运转
首先谈系统优化,这是大部分数据库工程师都要接触到的工作。企业定出一个商业目标,IT主管需要把这个商业目标转换成系统的承载能力,要保证系统不会成为拖累。这个目标到了数据库工程师这里,数据库工程师需要把它分成主机与操作系统、存储、数据库3个部分。
主机方面的优化会从硬件选型开始,企业就需要确定系统目标容量是什么,需要采购什么硬件能够支撑这个容量,要有可量化的指标,有了可量化的指标后就可以通过测试得出什么机器能满足性能,最后要综合成本考虑,选定一款能符合目标容量并且性价比最高的机器。
存储方面的优化需要数据库工程师对各种存储体系非常了解,对DAS,NAS,SAN的优缺点要了然于胸。要为不同的应用选取不同的存储方案,举个例子,如果一套系统对性能的要求不是第一位,但是非常注重经济性,那么DAS可能会是一个好的选择。如果一套系统要求有快速可以移植能力,那么NAS可能将会是首选。如果一套系统追求的是性能,那么SAN可以做为它的解决方案。
一般来说,企业内部的优化目标基本会跟数据库的吞吐量,数据库请求响应时间挂钩。在确定优化目标后,数据库工程师可以去查看当前性能,查看数据库性能监控报表,查看数据库的等待时间,查看top n sql,联合操作系统上的性能报表一起定位到瓶颈,然后对这些瓶颈做出相应的优化,再比较优化前后性能的差别,反复这个过程,最终达到优化目标。
优化应用提升负载能力
接下来说到应用优化。其实很多时候当系统负载比较高的时候都是因为应用里面有性能很差的sql语句引起的,控制sql语句的质量是数据库工程师的头等大事。企业如果拥有一个比较专业的数据库工程师,那么许多经过优化后的数据库系统将不再需要升级,可以大大节约IT系统的投入。
对于自己开发应用程序的公司,数据库工程师要主动建立sql培训体系,定期给开发人员讲解sql相关知识,最好是把已经出现问题的sql做为案例分析进行讲解,这样效果会比较明显。这样做的目的是因为sql语句是程序员写在应用里面的,很多时候dba等到应用上线后才发现性能有问题的语句,这个时候通常已经给业务系统带来或大或小的影响了,数据库工程师需要把问题消灭在开始阶段。
当然,只有培训是不够的,数据库工程师需要借助测试部门的力量把有问题的语句在测试阶段尽量都发现,这样就必定要搭建一套完整的开发数据库和测试数据库,开发库和测试库与产品库的表结构和对象要保持一致,以Oracle为例,dba可以自己利用pl/sql脚本对比两个库的数据结构并自动同步,还可以做到从产品库定时同步数据到开发测试库,尽量保证开发测试库数据的有效性,不会因为开发测试库数据的缺失导致测试中不能发现有问题的语句。
优化流程减少IT支出
最后说流程优化。流程优化需要有一套完善的体系保证数据库系统的稳定快速运行。从设备选型开始,需要组织一个选型团队,把设备选型当作一个项目来做,需要有数据库工程师、测试工程师、开发人员等很多人员组成一个项目团队,需要有PM来负责监督整个项目。
数据库工程师负责数据的准备,测试系统的搭建;测试工程师负责编写测试用例;开发人员负责整理搭建和配置application server;PM协调整个项目的资源和控制项目时间。测试完毕采购完成,数据库工程师要做为PM制定系统升级方案,也是要控制好项目的资源和时间安排,做好和各个相关部门的沟通。硬件上线后需要有测试流程保证程序员开发的应用没有sql方面的问题,只有测试通过才能上线系统。
数据库工程师在现代的企业中不仅仅只是单纯的数据库维护人员,数据库工程师要提供高附加值的服务,要利用自己的知识和技能不停地优化系统,减少IT支出,提高企业竞争力。要做一个优秀的数据库工程师,可持续发展的数据库从业人员,不仅仅要掌握上面说到的掌握操作系统,存储,数据库,良好的沟通技能,项目管理的能力,也要对业界的最新技术有敏锐的嗅觉,具备全局的IT构架规划能力,永远都在不断的学习中成长。
优化系统保障业务运转
首先谈系统优化,这是大部分数据库工程师都要接触到的工作。企业定出一个商业目标,IT主管需要把这个商业目标转换成系统的承载能力,要保证系统不会成为拖累。这个目标到了数据库工程师这里,数据库工程师需要把它分成主机与操作系统、存储、数据库3个部分。
主机方面的优化会从硬件选型开始,企业就需要确定系统目标容量是什么,需要采购什么硬件能够支撑这个容量,要有可量化的指标,有了可量化的指标后就可以通过测试得出什么机器能满足性能,最后要综合成本考虑,选定一款能符合目标容量并且性价比最高的机器。
存储方面的优化需要数据库工程师对各种存储体系非常了解,对DAS,NAS,SAN的优缺点要了然于胸。要为不同的应用选取不同的存储方案,举个例子,如果一套系统对性能的要求不是第一位,但是非常注重经济性,那么DAS可能会是一个好的选择。如果一套系统要求有快速可以移植能力,那么NAS可能将会是首选。如果一套系统追求的是性能,那么SAN可以做为它的解决方案。
一般来说,企业内部的优化目标基本会跟数据库的吞吐量,数据库请求响应时间挂钩。在确定优化目标后,数据库工程师可以去查看当前性能,查看数据库性能监控报表,查看数据库的等待时间,查看top n sql,联合操作系统上的性能报表一起定位到瓶颈,然后对这些瓶颈做出相应的优化,再比较优化前后性能的差别,反复这个过程,最终达到优化目标。
优化应用提升负载能力
接下来说到应用优化。其实很多时候当系统负载比较高的时候都是因为应用里面有性能很差的sql语句引起的,控制sql语句的质量是数据库工程师的头等大事。企业如果拥有一个比较专业的数据库工程师,那么许多经过优化后的数据库系统将不再需要升级,可以大大节约IT系统的投入。
对于自己开发应用程序的公司,数据库工程师要主动建立sql培训体系,定期给开发人员讲解sql相关知识,最好是把已经出现问题的sql做为案例分析进行讲解,这样效果会比较明显。这样做的目的是因为sql语句是程序员写在应用里面的,很多时候dba等到应用上线后才发现性能有问题的语句,这个时候通常已经给业务系统带来或大或小的影响了,数据库工程师需要把问题消灭在开始阶段。
当然,只有培训是不够的,数据库工程师需要借助测试部门的力量把有问题的语句在测试阶段尽量都发现,这样就必定要搭建一套完整的开发数据库和测试数据库,开发库和测试库与产品库的表结构和对象要保持一致,以Oracle为例,dba可以自己利用pl/sql脚本对比两个库的数据结构并自动同步,还可以做到从产品库定时同步数据到开发测试库,尽量保证开发测试库数据的有效性,不会因为开发测试库数据的缺失导致测试中不能发现有问题的语句。
优化流程减少IT支出
最后说流程优化。流程优化需要有一套完善的体系保证数据库系统的稳定快速运行。从设备选型开始,需要组织一个选型团队,把设备选型当作一个项目来做,需要有数据库工程师、测试工程师、开发人员等很多人员组成一个项目团队,需要有PM来负责监督整个项目。
数据库工程师负责数据的准备,测试系统的搭建;测试工程师负责编写测试用例;开发人员负责整理搭建和配置application server;PM协调整个项目的资源和控制项目时间。测试完毕采购完成,数据库工程师要做为PM制定系统升级方案,也是要控制好项目的资源和时间安排,做好和各个相关部门的沟通。硬件上线后需要有测试流程保证程序员开发的应用没有sql方面的问题,只有测试通过才能上线系统。
数据库工程师在现代的企业中不仅仅只是单纯的数据库维护人员,数据库工程师要提供高附加值的服务,要利用自己的知识和技能不停地优化系统,减少IT支出,提高企业竞争力。要做一个优秀的数据库工程师,可持续发展的数据库从业人员,不仅仅要掌握上面说到的掌握操作系统,存储,数据库,良好的沟通技能,项目管理的能力,也要对业界的最新技术有敏锐的嗅觉,具备全局的IT构架规划能力,永远都在不断的学习中成长。