开发人员应该深入研究 DBA 知识的哪些领域?

Mic*_*Sim 10 database-agnostic

我必须承认这个问题非常广泛,所以我会尝试缩小范围。在我们公司,我们有 3-4 名开发人员,并且有一些基于 SQL Server 的安装在我们客户的站点上运行(数据库大小高达 100GB,多达 100 个并发用户,Intranet 应用程序)。我们中没有人在运行/维护/管理(任何)数据库方面有真正的好经验。客户甚至没有那么多。到目前为止它运行良好,但我不能确定是因为我们做的一切都正确,还是我们只是没有触及我们不擅长的领域/情况。

因此,我正在寻找从 DBA 的角度运行数据库时您需要了解的基本内容。您知道确凿的事实,并且知道在您的日常工作中什么最重要。

我应该在哪些科目中收集更深入的知识,我应该听说过哪些知识,哪些是在我第一次面对它之前我可以不关心的?

我知道问题Software Engineers and DBA,但这并不是我想要的。周围也有很多书,但我想听听有实践经验的人的意见。

Mik*_*ll' 5

我每天都要处理的两件事。

  1. 灾难恢复。

  2. 性能调优。(对于单个查询和 dbms 本身。)

您的灾难恢复计划需要

  • 脚本化,
  • 测试,和
  • 实践过。

我使用的脚本是演员会遵循的东西,而不是用 Python 编写的东西。它应该告诉每个需要参与的人确切地做什么。(而且经常,确切地说,也是。)

查询的性能调优包括理解键、索引和规范化。(通常“调整”问题实际上是结构问题。)


Mar*_*ith 5

我倾向于同意@Catcall,数据库恢复应该是最重要的。备份和恢复选项的含义通常是 DBA 团队以外最难以理解的,并且最有可能导致灾难。

  • 确保您已为所有数据库和系统定义并同意(由技术和非技术管理人员)RPO(恢复点目标)RTO(恢复时间目标)
  • 将备份和恢复程序记录到非技术人员可以遵循的程度。
  • 确保所有文件都以印刷和电子形式保存在现场和场外。如果建筑物着火,存储在本地网络上的灾难恢复手册将没有多大用处。
  • 经常测试恢复程序的各个方面。备份无关紧要,重要的是恢复。

接下来,从与数据库无关的角度来看,是对构建数据库服务器的目的的理解;为您的交易和数据提供原子性、一致性、隔离性和持久性。通常被误解,经常是性能问题的原因和数据不一致的主要来源。

对于您选择的平台,深入了解如何实现 ACID 合规性。寻找诸如事务日志的作用、预写日志是什么、隔离级别存储内部结构之类的主题。了解数据库内部的关键方面可以使 DBA 工作的其他方面、性能调优和资源管理等方面更容易掌握。