教你七步优化数据库

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
简介: 用户现在不仅需要更复杂和灵活的分析,还需要更及时的信息——数据必须全天候可用,并且在许多业务中用户要求在事件发生的几小时内(在某些情况下,几分钟甚至几秒)内可以访问支持决策的数据。公司还意识到,许多不同的流程需要使用相同的数据,因此需要使用不同的配置文件。

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

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

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

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

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

359.jpg

优化的七个步骤

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

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  用于执行查询的资源消耗

相关文章
|
JavaScript 关系型数据库 MySQL
❤Nodejs 第六章(操作本地数据库前置知识优化)
【4月更文挑战第6天】本文介绍了Node.js操作本地数据库的前置配置和优化,包括处理接口跨域的CORS中间件,以及解析请求数据的body-parser、cookie-parser和multer。还讲解了与MySQL数据库交互的两种方式:`createPool`(适用于高并发,通过连接池管理连接)和`createConnection`(适用于低负载)。
10 0
|
19天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
|
1月前
|
SQL 缓存 PHP
PHP技术探究:优化数据库查询效率的实用方法
本文将深入探讨PHP中优化数据库查询效率的实用方法,包括索引优化、SQL语句优化以及缓存机制的应用。通过合理的优化策略和技巧,可以显著提升系统性能,提高用户体验,是PHP开发者不容忽视的重要议题。
|
19天前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
7天前
|
SQL 缓存 Java
Java数据库连接池:优化数据库访问性能
【4月更文挑战第16天】本文探讨了Java数据库连接池的重要性和优势,它能减少延迟、提高效率并增强系统的可伸缩性和稳定性。通过选择如Apache DBCP、C3P0或HikariCP等连接池技术,并进行正确配置和集成,开发者可以优化数据库访问性能。此外,批处理、缓存、索引优化和SQL调整也是提升性能的有效手段。掌握数据库连接池的使用是优化Java企业级应用的关键。
|
8天前
|
SQL 关系型数据库 数据库
【后端面经】【数据库与MySQL】SQL优化:如何发现SQL中的问题?
【4月更文挑战第12天】数据库优化涉及硬件升级、操作系统调整、服务器/引擎优化和SQL优化。SQL优化目标是减少磁盘IO和内存/CPU消耗。`EXPLAIN`命令用于检查SQL执行计划,关注`type`、`possible_keys`、`key`、`rows`和`filtered`字段。设计索引时考虑外键、频繁出现在`where`、`order by`和关联查询中的列,以及区分度高的列。大数据表改结构需谨慎,可能需要停机、低峰期变更或新建表。面试中应准备SQL优化案例,如覆盖索引、优化`order by`、`count`和索引提示。优化分页查询时避免大偏移量,可利用上一批的最大ID进行限制。
32 3
|
20天前
|
缓存 监控 数据库
优化数据库查询性能的八大技巧
在今天的互联网时代,数据库是许多应用程序的核心组件之一。优化数据库查询性能是提升应用程序整体性能的关键。本文介绍了八种有效的技巧,帮助开发人员提高数据库查询性能,从而提升应用程序的响应速度和用户体验。
|
4天前
|
关系型数据库 MySQL 分布式数据库
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
28 2
|
19天前
|
SQL 数据可视化 关系型数据库
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
104 0
|
19天前
|
关系型数据库 MySQL 数据库
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)