转自:https://blog.csdn.net/dba_huangzj/article/details/7841441

在专职DBA工作一年过一个月以后,开通了CSDN的博客专栏,在第一篇文章中,我谈谈一年DBA生涯的感想,虽然我是SQL Server的DBA,但是我觉得本文适合所有DBA,顺便把这篇文章作为个人真正DBA的开端和指引:

为什么要有DBA:

对于大量小公司,是请不起DBA,而且也不是非常必须的。那么DBA这个职业是如何产生的?我也不懂,个人的猜测是,当你的应用系统和数据库到达一定程度,就会面临很多问题,专业术语称之为:瓶颈。

面对瓶颈,很多有经验的开发人员或者其他岗位的人,可以应付,但不能保证都能应付,或者很好地解决,往往都只是治标不治本。因此,需要一个专职人员负责这部分工作。类似于系统管理员。试想你的公司有100台服务器,上面有若干个操作系统(虚拟机可能会导致更多数量)。一个开发人员面对无休止的开发进度,就算有心,也无力。

对于具有一定规模的企业,拥有一定数量的DBA和系统管理员是非常必要的。这能保证你的企业正常运作的前提下,达到各方面的最优化。

何为DBA:

毕业4年,做了3年开发,1年DBA,萌生成为DBA是在第二年末,看到DBA的前景比较好(有些地方把DBA描述成中医,年纪越大越值钱,其实很有道理,经验的确需要时间和经历去积累),工资也相对高很多,并且在公司的地位也相对比开发人员高。加上个人开发水平不高,所以最终决定转型为DBA,当时何为DBA?如何成为DBA?这些都还没弄懂。

后来,经过自己的坚持,终于当上了一个专职的DBA,从此开始自己的职业生涯。成为了DBA,面对的第一个问题就是:什么是DBA?其实就是说,要做些什么,才算一个DBA。

DBA,中文:数据库管理员,如其名,管理数据库的人,但是仅仅这样分析是不全面的,因为数据库作为信息系统的核心,有着无法比拟的重要性。我的上司说过,DBA和系统管理员才是公司的核心,程序没了,上传一份就可以了,服务器挂了,重装系统甚至买过硬件,也可以解决,但是数据库没了(其实就是数据没了),对产品提供商或者客户,都是毁灭性的打击。不是每类数据都能重现或者重建。

所以,作为DBA

首先,要有过硬的数据库知识,包括管理、设计、开发等等。

其次,要懂得足够多的或者说最起码的服务器管理知识,操作系统知识,因为你的数据库管理系统是运行在操作系统上的。

再者,由于绝大部分数据库系统都配有前端应用程序,所以必要的程序语言要达到最起码的了解级别。

还有,无论是外网还是内网系统,只要预算不会非常缺,一般数据库服务器不应该存放任何其他应用。这种情况下,往往都是通过网络传输来实现整个系统的应用和管理,所以网络知识也是必要的。

最后,DBA不仅仅要和硬件、代码打交道,也要和人打交道,试想如果你不懂得如何告诉开发人员某些功能存在问题,或者你不懂得如何向领导汇报,那么你的工作就会事倍功半。甚至有反效果。

能满足上面五点要求,你可以称自己为“初级DBA”。至于中级、高级,那些的要求就很苛刻了。在此先不谈。

在我个人的工作经验看来,DBA的工作粗略分为两种:【管理】和【优化】。当然,这两部分相辅相成又互相制约,不应该独立看待。

对于【管理】:

首先,当然要让服务器稳定、安全地运行。并且保证各方面的配置都能达到局部最优化。这里之所以说局部,是因为根据我的经验,没有一成不变的教条,也没有所谓的绝对最优,只有最合适的方案。所以不要对一个执行几乎不花时间的查询花大力气的优化,除非你发现这个查询具有重大隐患。光是稳定和安全就已经有非常多的学问,将在后续穿插讲解,另外,这两点你要尽可能地向系统管理员学习。不求你有他们的等级,但是要尽可能接近,毕竟他们只需要关系服务器和操作系统,你除了这些之外还要关心数据库。

然后,要充分利用好现有资源,除了政府和银行这些企业之外,一般的企业就算再大,预算也是有限的,而且对于不懂计算机的人来说,可能觉得服务器、软件等等都只是支出而不是收入,所以往往都看的比较轻。绝大部分DBA都必须面临有限的资源。但是往往这就是你发挥的地方。很多开发人员不重视性能,总是写一些“能用”的功能,最后往往因为资源不足而运行失败。作为DBA,要把这些程序优化,使其达到一个【少】字,这部分放到优化说。

最后,要做好应急措施,往往问题就在你以为不会发生的时候发生。所以DBA首要任务是做好数据库的备份(包括系统数据库)。然后就是做高可用,使得数据库能尽可能地保持不停机运作。然后就是做好一些自动化操作,比如自动、定期重建索引、清理备份文件等等。如果要细化DBA的工作事项,恐怕一万字都远远不够。所以这里仅仅是带过一下,后续也会穿插阐述。

对于【优化】:这是一个大课堂,足以写好几本书,而且也是基于【管理】部分。数据库管理不好,你代码质量再好,也是白搭。所以以下提到的是必须做到的:

首先,要有良好的编程规范,比如命名、注释,这些必须强制实行,曾经看过一篇文章,说维护人员经常要花70%的时间都去读一些没有注释的代码。剩下的时间才去做优化,试想作为企业,这些成本是不可忽视的。

其次,结合【管理】部分,做好日常的维护及性能数据收集,任何一本好的优化书籍都会叫你先定好性能基线,一般就是正常运行的系统一些硬件数据。比如CPU、内存和I/O值。有了这些,你才有理据去告诉别人,你优化了。让数据说话更有说服力。

然后,做好技术储备,前面提到的,要有扎实的编程基础,在这里就能体现,一个不会SQL编程的人或者不懂存储过程是什么的人,如何去优化?毕竟优化大部分情况下是改写写法和调整索引、表结构等等。

再有,优化要有一定的原则,大拇指定律指出,80%的性能问题是由于20%的程序引起的,所以要针对这20%的程序做优化,并且优化的时候不要做到极端,却要做到极致,一个查询从2分钟降到1秒钟,其实你优化的空间已经不大了,基本上可以提交结果了。

最后,要经常总结,把经验分享给开发人员,知识在你大脑里面,谁都抢不走,不应该害怕被别人替代,因为如果有天你面临这个处境,只能说明两种情况:1、领导故意找接班人,这样的公司你不留也罢。2、你的水平的确比不上别人,你应该多学习,而不是去埋怨。分享的过程中,你也许会被指出很多不足,这也是你成长的另外一个动力。

DBA应该怎么做:

作为DBA甚至作为一个人,首先你要保证自己不断进步,其实说白了就是不断学习,实践,再学习,再实践。

比较好的方式就是看书,目前我手上有不下50本书,包括电子书和实体书,我也在不断收集一些DBA的书籍,有时候看着这些书名,却有一种不知如何选择的感觉。后来工作需要,挑了一些能快速解决问题的书或者文章来看(当然如果有时间,我还是强烈建议打好基础),发现了绝大部分书籍和资料,其实描述的都是大同小异,只是侧重点不同,甚至有些是标新立异而已。所以,选择一些好的书籍,对入门很有帮助。如何入门?其实我也不好说啥,看个人,但是如果非要说一个方法,那我建议去考证。每个主流DBMS的厂商几乎都有相关的证书,从考证的过程,你可以看到厂商希望专业的使用者应该具有什么水平,从中你可以得到一个大概,然后再深入了解。不要因为证书而读书,那个只是你的一个指引,后面的路还长着。

在不断学习的过程中,要反复测试和验证,陆游的【冬夜读书示子聿】上的一句名言:纸上得来终觉浅,绝知此事要躬行。书上往往都是别人的经验,会有意无意略掉一些细节,只有实践了,你才会发现,知识也才会扎根你的大脑。而且书上的知识往往都是最后化了,很少出现问题,但是实际运用中,往往问题百出。

最后,要有好的心态,个人觉得,DBA最重要的不是技术,而是冷静,因为在几乎所有人眼里,数据库的问题你才是专家,你才能解决,你是别人的依靠。此时,一旦问题突然出现,你要先冷静,没有冷静的大脑,很多简单的问题却会复杂化。结果往往事倍功半甚至失败。有了冷静的性格,还要谦虚,无论是任何职业,总有你的前辈在,为此,要不耻下问。当你成为大牛了。你就明白为什么了。

本来有很多话说,但是万言文往往效果不佳,所以我以一图结束我的文章,在往后的文章里面,我会穿插阐述DBA的观点,当然,纯属个人经验:

其实本文没怎么经过深思熟虑,只是一时兴起就写了。所以有不足之后多多保函,并建议指出。谢谢。

sql server dba之路的更多相关文章

  1. 一名小小的SQL Server DBA想谈一下SQL Server的能力

    一名小小的SQL Server DBA想谈一下SQL Server的能力 百度上暂时还没有搜索到相关的个人写的比较有价值的文章,至少在中文网络的世界里面没有 但是在微软的网站有这样一篇文章:<比 ...

  2. 2年SQL Server DBA调优方面总结

    原文:2年SQL Server DBA调优方面总结 2年SQL Server DBA调优方面总结 当2年dba 我觉得,有些东西需要和大家分享探讨,先书单. 书单 1.<深入解析SQL Serv ...

  3. [转]2年SQL Server DBA调优方面总结

      2年SQL Server DBA调优方面总结 当2年dba 我觉得,有些东西需要和大家分享探讨,先书单. 书单 1.<深入解析SQL Server 2008 系列> 这个就是mssql ...

  4. 【SQL Server DBA】维护语句:删除并创建外键约束、获取建表语句

    原文:[SQL Server DBA]维护语句:删除并创建外键约束.获取建表语句 1.删除外键约束,建立外键约束 先建立3个表: /* drop table tb drop table tb_b dr ...

  5. 【SQL Server DBA】日常巡检语句3:特定监控(阻塞、top语句、索引、作业)

    原文:[SQL Server DBA]日常巡检语句3:特定监控(阻塞.top语句.索引.作业) 1.查询阻塞信息.锁定了哪些资源 --1.查看阻塞信息 select spid,loginame,wai ...

  6. SQL Server DBA工作内容详解

    在Microsoft SQL Server 2008系统中,数据库管理员(Database Administration,简称为DBA)是最重要的角色.DBA的工作目标就是确保Microsoft SQ ...

  7. sql server dba概念系列引用

    原文转自:https://www.cnblogs.com/gaochundong/p/everyone_is_a_dba_sqlserver_architecture.html <人人都是 DB ...

  8. SQL Server DBA性能优化

    虽然查询速度慢的原因很多,但是如果通过一定的优化,也可以使查询问题得到一定程度的解决. 查询速度慢的原因很多,常见如下几种:1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)2. ...

  9. SQL Server DBA日常运维语句

    1.检查数据库完整性 dbcc checkdb(Portal) 检查数据库完整性checkdb Portal的 DBCC 结果. Service Broker 消息 9675,状态 1: 已分析的消息 ...

随机推荐

  1. Hadoop--mapreduce编程实例1

    前提准备: 1.hadoop安装运行正常.Hadoop安装配置请参考:Ubuntu下 Hadoop 1.2.1 配置安装 2.集成开发环境正常.集成开发环境配置请参考 :Ubuntu 搭建Hadoop ...

  2. Windows下安装Django【转】

      Windows下安装Django及WEB服务启动 如果使用的是 Linux 或 Mac OS X ,系统可能已经预装了 Python .在命令提示符下 (或 OS X 的终端中) 输入python ...

  3. iOS学习笔记10 - Bundle和Info.plist

    经常会有需要从应用中搜索并读取一个文件或图片.这时候就会用到如下的语句: NSString *path = [[NSBundle mainBundle] pathForResource:@" ...

  4. centos7.2 安装 Elasticsearch5.2

    打算上全文检索,就找到了找个产品,开始研究下…… 1.官网地址: https://www.elastic.co/guide/en/elasticsearch/reference/5.2/install ...

  5. python web框架 推荐

    Flask 很轻,花很少的成本就能够开发一个简单的网站.非常适合初学者学习. 学会以后,可以考虑学习插件的使用,用 SQLAlchemy + Flask-SQLAlchemy 来对你的数据库进行控制. ...

  6. 本地连接linux虚拟机的方法

    1.给虚拟机添加一个ehtX: 2. 3.添加一个ethX 4. 5.设置使用的是哪一个网卡,ifconfig的时候变会得到相应的ip 6. 再在cmd那ping ifconfig出来的自动获取的ip ...

  7. Web安全测试(一)-手工安全测试方法&修改建议

    常见问题 1.XSS(CrossSite Script)跨站脚本攻击 XSS(CrossSite Script)跨站脚本攻击.它指的是恶意攻击者往Web 页面里插入恶意 html代码,当用户浏览该页之 ...

  8. 日历类Calendar

    在早期的JDK版本中,日期(Date)类附有两大功能:(1)允许用年.月.日.时.分.秒来解释日期:(2)允许对表示日期的字符串进行格式化和句法分析.在JDK1.1中提供了类Calendar来完成第一 ...

  9. 2017 ACM区域赛(南宁站) 参赛流水账

    day0: 早上四点起床赶飞机,还好没有吵醒室友导致被打死.本来想在飞机上准备一下下周的小测,结果飞机一点都不平稳,只能全程和队友吹逼聊天.下午在宾馆里和johann通关了一部合金弹头,重温了童年的经 ...

  10. Androidz之字符串国际化问题

    (1)字符串的国际化 在res下写两个values 注意:命名方式都是固定的 一个中文版:values-zh 一个英文版:values-en 可是<string name  要写成一样的,这样会 ...