教你七步优化数据库

  用户现在不仅需要更复杂和灵活的分析,还需要更及时的信息——数据必须全天候可用,并且在许多业务中用户要求在事件发生的几小时内(在某些情况下,几分钟甚至几秒)内可以访问支持决策的数据。公司还意识到,许多不同的流程需要使用相同的数据,因此需要使用不同的配置文件。

   理想情况下,公司应在功能中立的数据模型中以尽可能小的形式保留详细数据,这可以让商业公司可以从广泛的观点和流程中提出任意数量的问题。基本前提是:始终可以聚合明细数据,但永远不能分解摘要数据。这并不意味着你永远不应使用摘要表;相反,它意味着您不应仅用摘要数据替换明细数据。

   如果所需分析需要明细数据,则无论技术如何,仅使用摘要表将会失败。实施者和用户必须共同努力,以了解业务需求及其驱动因素;然后他们需要使用最低侵入性的过程来满足这些要求。

   构建摘要表,添加索引,强制执行优先级和非规范化数据的主要原因是提高性能。如果您可以使用任意数量的数据来提出任何问题,并获得即时响应,那么您将永远不需要构建摘要或索引。

   这些结构可以作为其他限制情况的解决方法。它们的存在需要更多的空间、数据管理以及事件发生和采取有效行动之间的时间。问题是:如何在提高性能、最小化数据复制和数据管理之间取得平衡。

教你七步优化数据库

优化的七个步骤

一、从中性数据模型开始,该模型被规范化并且不特定于任何函数或组

l 提供支持业务目标所需的最低级别的详细信息

l 通过定义的详细程度解决未来需求

l 使用定义详细信息表的视图以获得安全性和并发性

l 启用访问视图,允许对正在更新的表进行选择(无意图读取)以避免锁定问题

二、实现视图以简化导航

l 帮助工具使用第三方工具和操作视图以创建更好的结构化查询语言(SQL)

l 提供前端工具可能需要的结构,以创建优化的SQL并消除对前端工具的依赖,了解市场上的每个数据库

l 在视图中嵌入优化的连接技术

l 为表格集成一层安全性

l 为每个业务部门提供其自己的逻辑功能化- 以用户希望看到的方式呈现数据

l 允许数据存储一次,然后通过视图转换,减少数据冗余,确保一致性并简化数据管理

三、添加索引,范围从简单的技术(如二级索引)到复杂的结构(如覆盖索引,连接索引或聚合索引)

l 提供一个主要优点,因为系统与基础数据表在同时维护它们

l 为索引附加一些开销,因此要知道影响和权衡,并在成本与收益分析中识别它们

四、使用数据库优先级框架强制确定优先级,以便在必要时使用资源保护关键的工作负载

l 优化SQL后,优化索引和视图结构

l 提供更佳的可用容量使用,但不能提供更多容量

l 提供对工作负载的更好理解

l 系统拥挤时吸引人注意;在拥挤时代,要有优先级

l 让商业公司提供优先方向

五、只有当对更高性能的需求超过分析灵活性时,才进行理性总结和非规范化

l 遵循共存而非替换的策略,保留详细信息表以进行扩展分析,同时添加非规范化结构

l 满足多种需求,可以为各种用户和部门提供服务,证明管理成本合理

l 满足用户社区的更大利益而不要坚持功能目的

l 数据量和波动率的结果在成本效益分析中起着重要作用

六、考虑“非理性”摘要和非规范化来定制特定业务流程或报告的数据模型

l 当期望的性能超过灵活分析的需求时,需要结构来解决单个功能时

l 在考虑成本效益分析时,包括更高的数据管理和资源成本

l 通过维护基础细节数据来最小化影响;当条件在未来发生变化时,这种不合理的结构可以在几乎没有影响的情况下消除

   如果您还没有达到预期的性能,那么还有一个步骤。但是,它的成本相对较高。因此,在继续之前,请确保预期的业务价值将超过使提取的数据与明细数据保持一致所需的额外数据移动和管理的成本。

七、探索,扩展和导出

l 探索答案集的业务使用情况,并验证业务成果的变化是否会推动预期的收入增长或成本降低,具体取决于应用程序。企业用户是否愿意支持这些期望,并且增强的性能是否能够证明成本合理?

l 展开当前平台。性能要求是否至关重要,以确保新容量?

l 将数据从主数据仓库导出到特定于应用程序的平台。在这种情况下,专门针对其应用调整的专用环境将提供对单个应用程序的更多控制。请记住重复数据的所有成本,增加时间延迟,以及需要管理和支持的新平台、软件环境的成本。

反证以上步骤

   采取这七个步骤需要了解每个步骤所涉及的成本以及这样做带来的好处。它还需要做出支持长期和短期需求的决策。在某些情况下,您可以创建摘要表或添加后来会丢弃的非规范化数据模型。只要丢弃表不会导致中断或大量应用程序更改,这是可以接受的。确保这一点的一种方法是尽可能避免使用汇总或非规范化表作为更多下游应用程序的输入。

   在应用这七个步骤时,对每个提议的步骤执行成本效益分析,包括物理方面,例如磁盘空间,管理结构的资源以及由于时间延迟而导致维护机会丢失。

可以从下面几处考虑改进:

l 查询性能和响应速度

l 用户并发率

l 吞吐量

l 用户满意度和生产力

l 利用第三方工具

l 用于执行查询的资源消耗

上一篇:Android:随笔——强大的ConstraintLayout


下一篇:王之泰 201771010131《面向对象程序设计(java)》第十六周学习总结