《岗位怎么招》第二期:DBA岗位的人物画像

《岗位怎么招》第二期:DBA岗位的人物画像

《岗位怎么招》第二期:DBA岗位的人物画像

 

上一期,我们对DBA这个岗位做了一些非常基础的阐述

岗位怎么招第一期:DBA的解说

这一期,我们补充来说明一下DBA的人物画像。

 

DBA的段位

真正厉害的DBA,他们犹如定海神针一样的作用。

(普通人眼中:DBA平常好像没啥事情干,浪费钱)

给你们讲一个扁鹊的故事,你们就知道其真正的作用。

春秋战国时,扁鹊曾到魏国替魏文王诊断病情。

 

《岗位怎么招》第二期:DBA岗位的人物画像

优秀的DBA,就像扁鹊大哥一样,让整个系统在没有出现问题之前就把问题给解决了,让你觉得系统一直稳定无故障。

 

其实公司是否有一个强力DBA,对从事技术研发相关工作的程序员或者架构师非常重要。

 

DBA的等级,其实没有分得那么严格。

一般可以简单分成3个等级,初级、中级和高级。

初级的DBA一般都是兼职的,他们往往同时是程序员。初级的DBA简历,一般都写得超级棒的,比如参与了各种与数据库相关的工作之类的。

然而,他们实际的工作是:

1、第三方供应商已经安装并配置好数据库,他们只做监控的工作,处理一些简单的小问题,有大事就立马找第三方。

2、他们喜欢使用图形化数据库管理工具,终端式的处理能力不强(类似于,在软件上点一点按钮,就可以完成工作)

 

中级的DBA,他们涉及的工作就会多很多(其中,中级和高级在技术上差别不大,差距在于其他方面的能力)。

数据库安装、配置、管理

数据库权限及安全管理

监控及性能调优

备份及恢复

解决一般性问题

 

高级DBA,国内非常少。技术能力上,可能和中级DBA相差不大。主要差别在于技术的广度和经验的多少。

高级DBA,可能会通晓多种大型数据库,且知道不同数据库在不同环境下的优势和劣势,并能够做出最适合的决策。

 

当然,对于HR来说,这种分类实际上我们是非常难对人才的能力做判断,我们有时候只会通过一些相关的证书来判断。

(告诉你,其实证书有时候并不是特别重要,有些培训都可以获得证书的)

那么,HR应该从哪些角度来判断DBA的段位呢?

其中有一句万金油的问法:如果你招一个DBA,你会从哪些角度或问哪些问题来判断这个人的技术能力。

为了加深各位HR对DBA关键能力的印象,我们接下来一一拆解。

 

HR可以从以下几个方面判断DBA的段位

 

《岗位怎么招》第二期:DBA岗位的人物画像

1.熟悉至少一种数据库的应用

目前市场上有多种数据库之间的实现是有差异的,相关技巧不一定可以通用。一般DBA都会有一个擅长的数据库类型,例如:Oracle/Mysql/Mongodb等。

无需询问,看简历即可

包括:安装部署、执行计划、主要算法、参数调整、防灾备份、常见错误修复等

2.熟悉至少一种数据库主要算法(重点关注)

以执行计划为例:它实际上是数据库服务器在执行SQL语句时,会准备多套方案,最后选择消耗资源最小的那个方案,整个过程就是执行计划。(作为HR,是不是看不懂?)

通俗点讲,我们打开高德地图,起点设置为体育中心B出口,目的地设为广州南站。这里,高德一般会提示给到你几条导航选择:最短时间,最短距离,躲避拥堵、高速优先等。

这个过程,就类似于数据库操作的执行计划,而获得每一条线路的细节,就相当于查询算法的工作。

执行计划一般有3种:

全表扫描、索引扫描(索引扫描、索引范围扫描、索引快速全扫描、索引跳跃式扫描、索引降序式扫描)、ROWID扫描

作为HR,不用强迫自己去理解这些概念,略有点难度。

建议可以这么问:

1、常用的执行计划有哪些类别?如果他答得上来,说明理论基础还可以,至少他背下来了嘛。

2、不同的执行计划,有什么不一样?可否用通俗的语言来描述一下?

3、在具体的项目中,哪些时候你会使用全表招描、哪些时候你用索引扫描、哪些时候你用ROWID扫描?你的判断依据是什么?(这个问题,一般放在1和2问题的后面,避免候选人通过问题的题干,了解答题逻辑)

3、如何不借用第三方工具,查看sql的执行计划?

4、在具体的执行计划中,你最常用的几种查找算法是什么?他们的区别是什么样的?(有三种,Nested Loops, Merge Joins和Hash Joins)

3.熟悉影响数据库性能的参数 如MySQL中的my.ini中各种参数的含义、影响及调优方法。Oracle中SGA/PGA如何分配调整及调优等等。

如果有兴趣的,可以问这些问题:

1、Mysql的存储引擎有哪些类别,分别有什么区别?(MYISAM读性能好,InnoDB大容量数据处理)至少说明5点不同。

公共参数配置:

2、一般默认的最大连接数是多少?一般建议是多少?(151,80%)

3、默认缓存数是多少?建议是多少?(2M,16M)

MYISAM参数配置:

索引缓存大小设置建议是?(物理内存的30-40%)

读操作缓冲区大小默认是多少,建议是多少(128K,16M或32M)

InnoDB参数配置:

索引缓存设置建议是?(物理内存的60-70%)

缓冲池的实例数一般推荐是多少个?(4或8个)

 

Oracle的SGA和PGA也是参数配置的作用,只是叫法不同。

SGA:System Global Area是Oracle 实例的基本组成部分,在实例启动时分配

系统全局域SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区

PGA:Process Global Area是为每个连接到Oracle database的用户进程保留的内存

 

不用理解其到底是什么意思,只要知道这些参数设置得好,可以保证整个系统运转是否正常,比如卡机啊之类的,可能跟这块的工作会有关系。

一般的数据是:

对于OLTP系统,SGA占数据库使用总内存的80%,PGA占数据库使用内存的20%

对于OLAP(DSS)系统,对于密集大查询的系统,PGA可以占到数据库使用总内存的70%

这里同样可以问到你的面试者,如何设置基础参数,为什么要这么设置。

关于OLTP和OLAP,之前分享过3次。

 

《岗位怎么招》第二期:DBA岗位的人物画像

以上这种内容一般是死记型的,面试者不一定记得住,也不能体现得出真实能力。

建议通过笔记或者上机测试。

当然如果你实在是要问的话,建议在每一个问题后面加上为什么要做这样的参数设置。

 

4.熟悉至少一种数据库的SQL调优(重点关注) 因为数据库采用的算法并不一定相同,所以SQL调优的方式也不相同。

SQL调优主要是提高数据库的性能和稳定。简言之,又快又稳。

 

1、sql调整最关注的是什么?(读性能和IO量)

2、你应该有对sql调优的一些常见方法做总结吧,你自己有哪些原则来提高查询效率?

无论哪种优化,最需要坚持的原则是:避免无计划的全表扫描

 

5.熟悉常见的防灾备份方法(重点关注)

数据库的防灾备份,是保证系统是否能够稳定使用的重大前提。一般要求都是7*24小时。因此,DBA能够完成这部分工作,也是技术的一个重要评估标准。

建议可以这么问:

1、Mysql的复制原理及流程(可以给一张纸,让面试者画出来,并用一个生活例子来类比出来)

2、备份有几种方式,说明不同的备份方法的异同?(热、温、冷,二进制日志备份,四种。一般用前三者多,业务影响从低到高排列,备份恢复成本从高到低排列、一致性1为组织后一致,前2和3者为完全一致)

3、分布式数据的优缺点?(抗灾,高并发,受网络影响,总体成本高,扩展性强)

 

 

6.熟悉数据库设计范式 范式不是万能的,但不懂是不行的。虽然生产中不可能完全采用范式设计,但是要知道不符合哪种范式会带来什么问题,这样才能在制造数据冗余的同时保证数据的一致性。

基本都会,无需询问。

 

7.熟悉数据库设计基本原则(重点关注) 为了提高效能,数据库设计中有一些常用的优化原则,需要了解其利弊,在设计中考虑正反两方面的影响,权衡利弊,设计优化的数据库模式。

基本都会,不需询问。

之前做过3次分享,可以回听我的分享。

《岗位怎么招》第二期:DBA岗位的人物画像

 

《岗位怎么招》第二期:DBA岗位的人物画像

1.熟悉Linux/Unix操作系统的管理。 目前市场上绝大部分的数据库服务器是跑在Linux系统下的。对于DBA来说,熟悉Linux都是必备的。Solaris/FreeBSD等Unix系列的系统也有不少市场,尤其是Solaris被Oracle收购之后,更可能得到重视。

这个部分是必备技能,高级DBA就没有必要问到这部分了。

如果你要招初级的DBA,建议可以这么问:

1、你使用Linux系统管理的操作频率最高的操作有哪些?

2、怎么查看系统进程?

3、如何发现进程死锁,需要关掉进程,有哪些方法?(kill pid /-9 kill pid)

仅限初级DBA使用,如果有需要,回头我再整理一份技术的清单。但个人认为对于HR来说,这种问题基本上交给笔试就好了,高级DBA基本上搞得定这些的。

 

2.了解网络模型和配置(重点关注)。 当DBA完全不懂网络,分布式、集群没有网络是跑不起来的,碰上大型应用,基本上就准备宕机了。这里主要和负载均衡有关,主流的负载均衡器有LVS/HAProxy/Nginx。

建议可以这么问:

1、你们公司服务器是否一主多从的结构?

2、你们多从使用的负载均衡器是什么类型的?

3、你还接触过哪些负载均衡器,这几种均衡器有什么区别?应用领域有什么不同吗?

注意要按顺序来问,同时建议让面试者以通俗的例子来向HR解释。

4.了解硬件体系结构。 数据库的问题并不一定是软件问题,也可能是硬件和网络的问题,了解硬件的体系结构,不仅可能帮助排错,也能正确的估算数据库的承受能力和硬件需求。

4.了解硬件体系结构。 数据库的问题并不一定是软件问题,也可能是硬件和网络的问题,了解硬件的体系结构,不仅可能帮助排错,也能正确的估算数据库的承受能力和硬件需求。

 

5.熟悉至少一种Linux脚本语言。 包括Perl/Shell/Python等,运维过程中少不了一些重复的操作,这些操作如果有脚本的帮助,将大大提高DBA的工作效率。

Shell是必备的,Perl或Python可以二选一。

如果你使用的是mac电脑,打开终端。

《岗位怎么招》第二期:DBA岗位的人物画像

标红色的,就是所谓的shell。

实际上,是把我们原来通过鼠标双击打开文件,换成ls和cd。

《岗位怎么招》第二期:DBA岗位的人物画像

1.团队协作能力(重点关注) 特别是DBA,这个岗位实际上工作的伙伴除了开发工程师之外,甚至还有各方领导和销售端的同事,团队协作能力特别重要。工作中不可能一个人能单挑所有问题,总是需要合作的,跟团队的每个人处好关系,能完成自己的任务,并且能协同整个团队去解决问题,才能发挥自己的效能和整个团队的效能。

 

2.正确的分析能力(重点关注)

遇到问题或者拿到一个新的技术,如何去分析其问题所在或分析其原理,需要正确方法。能在排除其他因素干扰的情况下,分析问题,这是一种能力否则容易出现某些因素会干扰判断,得出错误的结论。

这一点基本上和人的逻辑思维能力有关系。

3.严谨负责的态度(重点关注)

网上很多博文或者有些书中的结论,可能是翻译错误可能是作者疏漏,要抱着怀疑的态度去看书和博文,所述一定要经过自己证实、分析才能下结论,不可以光看就认为是正确的。没严谨的态度用正确的方法去分析,结果就看表面现象以为是正确的,可能很久都不能更正。

这一点,可以通过考量人才的细心来判断。

 

综合能力方面,相信HR可以通过常见的面试手段,可以做基本的判断。

欢迎各位发出自己想要了解的岗位

也许下一期,就是你的疑问

让我们一起成为最懂技术的HR

 

切记:

我们是HR

即使面试者回答的内容,听不懂也没关系

我们关注的是他是否能够答得上来

 

———— / END / ————