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

时间:2009-08-24 10:42:25

标签: mysql sql-server oracle

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

7 个答案:

答案 0 :(得分:9)

开发人员负责执行使代码 a)正确且 b)快速执行的所有操作。

这当然包括创建索引和表格。

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

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

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

目前,关系数据库尚未处于允许分离责任的状态,以便开发人员可以使查询正确DBA可以使他们即可。这是一个神话。

如果资源不足(例如,索引在某些DML操作速度很慢的情况下快速查询某些查询),DBA应该报告,而不是的固定

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

此决定应由项目经理(而非DBA或开发人员)决定。

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

开发人员应该了解数据库如何工作,正常工作的所有内容。

DBA应该知道如何使数据库正常工作的所有内容。

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

答案 1 :(得分:8)

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

此外,如何阅读查询执行计划。 SQL是一种非常酷的语言,它会告诉你完全它将如何运行你的代码,只要你很好地问。这对于优化代码和发现瓶颈至关重要。

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

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

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

答案 2 :(得分:2)

优化。您的代码总是应该使用尽可能少的资源。

答案 3 :(得分:2)

我建议您了解相关DBMS的安全架构。

这样做可以促进您开发安全代码。

以SQL Server为例,特别考虑到:

  • 了解为什么不应授予“托管代码”(例如.NET CLR)提升权限。这样做的含义是什么?
  • 什么是跨数据库所有权链接?它是如何运作的?
  • 了解执行背景。
  • 本机SQL Server加密如何工作?
  • 如何签署存储过程?为什么你甚至想要这样做?

作为一般规则,您对使用的引擎了解得越多,就可以从中获得越多的性能。

答案 4 :(得分:1)

目前浮现在脑海中的一件事是如何导航和理解数据库“系统”表/视图给您的信息。例如。在sql server中,master数据库下的视图。这些视图包含诸如当前登录,表和分区列表等信息,这些信息在尝试跟踪挂起登录或用户当前是否已连接等内容时都是有用的。

答案 5 :(得分:1)

你们桌子的关系。您应始终拥有数据库的最新打印输出和软拷贝。您需要知道主键,外键,必需列和自动填充列,但我认为您不能编写有效的查询或确保您的数据库只提供它所需的内容。

我认为其他所有人都会介绍它。

答案 6 :(得分:0)

充分了解数据库系统的体系结构肯定会有所帮助。您能否自己绘制图表以显示DBMS的组件及其交互?