DBM*_*s99 7 mysql sql-server oracle
即使代码必须由dba授权或创建,创建表和索引等对象也是必不可少的.如果有成就的开发人员应该知道dbas通常执行的其他哪些领域?
开发人员负责执行使他的代码a)正确且b)快速的所有事情.
这当然包括创建索引和表.
制作一个DBA
负责的索引是一个坏主意.如果代码运行缓慢怎么办?谁应该受到指责:开发人员代码错误或DBA
索引错误?
A DBA
应传达数据库支持操作,如备份,构建基础架构等,并报告缺乏资源.
他或她不应该是制定影响整个数据库系统性能的决定的唯一人.
到目前为止,关系数据库尚未处于允许分离责任的状态,以便开发人员可以使查询正确并且DBA
可以使它们变得快速.这是一个神话.
如果缺少资源(比如,索引会在某些DML
操作的速度很慢的情况下快速查询某些查询),则应该由DBA 报告,而不是修复.
现在,这是一个决策时间.我们还需要更多,快速查询或快速插入?
该决定应由项目经理(而非DBA
开发人员)决定.
当做出决定时,开发人员应该被赋予新的任务:"使SELECT
查询尽可能快,考虑到你没有这个索引".或者" INSERT
尽可能快地进行查询,考虑到您将拥有此索引".
开发人员应该知道数据库如何工作的一切,当它正常工作时.
A DBA
应该知道如何使数据库正常工作的一切.
后者包括进行备份的能力,从备份恢复的能力以及检测和报告资源争用的能力.
数据库存储和优化的来龙去脉都是巨大的.知道如何对表进行索引和分区是非常宝贵的知识.
另外,如何阅读查询执行计划.SQL是,它会告诉你这么酷的语言究竟它是如何运行你的代码,只要你问很好.这对优化代码和发现瓶颈至关重要.
数据库维护(备份,缩小文件等)对于保持服务器平稳运行始终非常重要.这也是经常被忽视的事情.
开发人员应该了解所有关于触发器和存储过程的知识 - 让数据库为您工作.这些东西可以帮助实现这么多任务的自动化,并且通常开发人员会忽略它们并试图在应用程序端处理它们,而它们应该真正由那些在集合中思考的东西来处理.
这让我想到了最重要的一点,数据库开发人员需要集思考.我经常听到,"对于每一行,我都想......"这通常是我头脑中的警报.您应该考虑集合如何交互以及您希望对整个列执行的操作.
归档时间: |
|
查看次数: |
1304 次 |
最近记录: |