- 1、本文档共29页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
如何由开发人员和运维人员转型DBA
如何由开发人员和运维人
员转型DBA
?演讲人:宋沄剑
议程
? 为什么转型DBA很难
? 转型DBA的优势和劣势
? 如何转型DBA
为什么转型DBA很难
为什么转型DBA很难
? 很多网上的数据库调优文章包装过度,故事通常可以抽象出如
下模版
? 在机场接到客户电话,否则不在机场显不出高大上
? 客户已经被问题折磨的”这酸爽”,否则显示不出顾问价值
? 一定不能来得及吃饭,否则问题显得不紧急
? 还一定要出点状况(堵车、突然断网等),否则没有戏剧性
? 解决问题方法不能超过篇幅20%且不能写细节,否则没有神秘性
? 上面的只是一个玩笑
为什么转型DBA很难
? 但也不能那么简单……
转型DBA难于开始
? 在看完调优故事之后…..
? 关键字:DBA 604个 高级DBA:46个 初级/实习DBA:
2个
? 而打开仅有的2个招聘后,发现:
? 2年以上工作经验
? 熟悉生产环境的备份、日常维护与优化
? 梯子的第一节在哪?
DBA所需的知识广
? 数据库处于IT架构的中间层
? DBA不仅需要懂数据库,还需要
懂下层和上层,甚至还需要了解业
务领域
? DBA还必须能够与开发人员与管
理层进行交流
DBA学习进展缓慢
? 开发人员的错误通常可以在编译时
或测试时发现,这意味着可以很快
的学习经验
? DBA的错误通常都是在上线后,最
终用户反馈过来,所以经验的积累
往往需要很长时间
DBA错误代价惨重
? DBA犯错相比其他职业的代价更为惨重
? 业务中断
? 数据丢失
? 数据泄露
? 应用体验差
转型DBA的优势和劣势
优势:薪酬
? 同样工作经验的DBA薪酬会比开发人员、网络工程师、系
统工程师要高,DBA在IT行业薪酬中上
? 薪酬会随着经验增长
优势:知识淘汰速度
? 数据库的功能通常只会新增,很少淘汰旧功能
? 经验和价值成正比
优势:视野和学习
? 成熟的数据库系统会高度自动化运维,意味着人可以工作
的更轻松
? 工作中会和组织中不同的角色打交道,接触不同层面的知
识
劣势:压力
? DBA又称为Default Blame Acceptor,只有在出问题时大家
才关注你
? 需要限定时间解决不同原因导致的数据库问题
? 存储
? 网络
? 交换机
? 程序
? 虚拟化
? 操作系统
劣势:工作时间有时不确定
? 7*24小时的系统,需要在任何时间响应并解决问题
? 系统的升级、迁移、硬件的替换都需要在系统闲时做(意
味着晚上或者节假日)
劣势:容错性小
? 工作疏忽导致严重问题(数据丢失、被窃、服务器停机、
人为导致故障)会导致严重后果
? 频率的定义
如何转型DBA
DBA的工作职责
? 安装升级数据库
? 为系统和数据库打补丁
? 数据库健康监测
? 规划存储
? 权限控制
? 备份还原
? 数据ETL
? SQL脚本审核与部署
? 灾难恢复
? 高可用架构设计
? 文档化
? 性能调优
? 沟通
毕业后经过培训成为DBA
? 可能性最小
? 需要将所学应用到数据库
? 需要和开发人员打交道
? 犯错成本较高
? 公司很难会将至关重要的数据交到新手手里
? 即使公司有高级DBA希望培养新手,机会往往也会被内部
拿到(这也是为什么初级DBA岗位稀缺的原因)
? 注:目前市场对厂商证书的认可度较差
由开发人员转型DBA
? 可能性较高
? 优势
? 通常都有SQL开发经验
? 容易和开发人员沟通
? 劣势
? 对生产环境认识不足
? 对存储或网络通常知识不够
? 需要转变思维方式(开发偏向实现,数据库偏向抽象。开
发偏向具体,数据库偏向关系代数和集合)
由开发人员转型DBA
? 转型路径
? 公司有DBA
? 多向DBA请教,DBA审核不过或调优的脚本细问具体原
因,懂得背后原理。
? 公司没有DBA
? 学习数据库理论,集合思想,学习数据库的游戏规则,
将所学应用于现有数据库看是否能够按照希望的方面提
升。多承担数据库相关的责任。
由开发人员转型DBA
? 集合思维漫谈
? 对于表A和B的Join C#实现(循环嵌套方式)
static void NestedLoopJoin(ListKeyValuePairint, string people, ListKeyValuePairint, string
purchases)
{
foreach (var n in people)
foreach (var i in purchases)
if (n.Key == i.Key)
Console.WriteLine(Name index {0}, {1}, bought some {2} , n.Key, n.Value, i.Value);
}
? SQL实现
? Select * from tbA in
文档评论(0)