开发人员应该学习哪些必要的dba技能?

DBM*_*s99 7 mysql sql-server oracle

即使代码必须由dba授权或创建,创建表和索引等对象也是必不可少的.如果有成就的开发人员应该知道dbas通常执行的其他哪些领域?

Qua*_*noi 9

开发人员负责执行使他的代码a)正确且b)快速的所有事情.

这当然包括创建索引和表.

制作一个DBA负责的索引是一个坏主意.如果代码运行缓慢怎么办?谁应该受到指责:开发人员代码错误或DBA索引错误?

A DBA应传达数据库支持操作,如备份,构建基础架构等,并报告缺乏资源.

他或她不应该是制定影响整个数据库系统性能的决定的唯一人.

到目前为止,关系数据库尚未处于允许分离责任的状态,以便开发人员可以使查询正确并且DBA可以使它们变得快速.这是一个神话.

如果缺少资源(比如,索引会在某些DML操作的速度很慢的情况下快速查询某些查询),则应该由DBA 报告,而不是修复.

现在,这是一个决策时间.我们还需要更多,快速查询或快速插入?

该决定应由项目经理(而非DBA开发人员)决定.

当做出决定时,开发人员应该被赋予新的任务:"使SELECT查询尽可能快,考虑到你没有这个索引".或者" INSERT尽可能快地进行查询,考虑到您将拥有此索引".

开发人员应该知道数据库如何工作的一切,当它正常工作时.

A DBA应该知道如何使数据库正常工作的一切.

后者包括进行备份的能力,从备份恢复的能力以及检测和报告资源争用的能力.

  • 开发人员应说明索引的逻辑方面(索引哪些列,唯一性,结构如果合适).DBA应负责物理方面(例如文件/磁盘位置,增长因素等). (2认同)

Eri*_*ric 8

数据库存储和优化的来龙去脉都是巨大的.知道如何对表进行索引和分区是非常宝贵的知识.

另外,如何阅读查询执行计划.SQL是,它会告诉你这么酷的语言究竟它是如何运行你的代码,只要你问很好.这对优化代码和发现瓶颈至关重要.

数据库维护(备份,缩小文件等)对于保持服务器平稳运行始终非常重要.这也是经常被忽视的事情.

开发人员应该了解所有关于触发器和存储过程的知识 - 让数据库为您工作.这些东西可以帮助实现这么多任务的自动化,并且通常开发人员会忽略它们并试图在应用程序端处理它们,而它们应该真正由那些在集合中思考的东西来处理.

这让我想到了最重要的一点,数据库开发人员需要集思考.我经常听到,"对于每一行,我都想......"这通常是我头脑中的警报.您应该考虑集合如何交互以及您希望对整个列执行的操作.