数据库性能优化方向的三大类别

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 【6月更文挑战第6天】本文介绍了数据库优化策略,包括集中式数据库的反规范化设计(如增加冗余列、派生列、重组合表、水平和垂直分表)和数据一致性保障;这些方法旨在提升性能、确保数据安全和适应大规模数据场景。

1 简介

优化数据库,优化的是什么东西?

mandala曼德罗符号.png

这里介绍的方法都旨在合理使用存储过程以增强安全性和效率;分布式数据库的全局与局部模式,以及主从复制、读写分离、分表分库等实现方式;分布式缓存的角色,强调其高速内存操作和数据一致性管理。

2 集中式数据库

使用反规范化设计,从设计时优化,以避免进行表之间的频繁连接操作。 但是造成了重复存储,浪费磁盘空间。

  • 设计方式

增加几余列:

是指在多个表中具有相同的列,它常用来在查询时避免连接操作。

增加派生列:

指增加的列可以通过表中其他数据计算生成。
它的作用是在查询时减少计算量,从而加快查询速度。

重新组表:

指如果许多用户需要查看两个表连接出来的结果数据
则把这两个表重新组成一个表来减少连接而提高性能。

水平分表:

按记录进行分割,把数据放到多个独立的表中,
主要用于表数据规模很大、表中数据相对独立或数据需要存放到多个介质上时使用。

垂直分表:

对表进行分割,将主键与部分列放到一个表中
主键与其它列放到另一个表中,在查询时减少 1/0 次数
  • 保证数据一致性

使用触发器保证数据联动更新。

使用事务保证机制,适用于单体数据库。

应用层面的保证机制。 适用于异构数据库。同时需要兼顾分布式事务机制去保证ACID原则。

使用批处理脚本保证数据一致性。

3 合理使用存储过程

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,它存储在数据库中,一次编译后永久有效。

用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

存储过程是数据库所提供的一种数据库对象,通过存储过程定 义一段代码,提供给应用程序调用来执行。

从安全性的角度考虑,更新数据时,通过提供存储过程让第三方调用,将需要更新的数据传入存储过程。

而在存储过程内部用代码分别对需要的多个表进行更新,从而避免了向第三方提供系统的表结构,保证了系统的数据安全。

4 分布式数据库

在分布式数据库中,局部数据库管理系统中的内模式与概念模式与集中数据库是完全一致的。

不同之处在于新增的全局数据库管理系统,而整个全局数据库管理系统,可以看作是相对于局部概念模式的外模式。

由于外模式部分有一系列的分布模式、分片模式、全局概念模式和全局外模式,以及多级映射使得用户在使用分布式数据库时,可以使用集中式数据库同样的方式。

(1)全局外模式。全局外模式是全局应用的用户视图,是全局概念模式的子集,该层直接与用户(或应用程序)交互。

(2)全局概念模式。全局概念模式定义分布式数据库中数据的整体逻辑结构,数据就如同根本没有分布一样,可用传统的集中式数据库中所采用的方法进行定义。

(3)分片模式。在某些情况下,需要将一个关系模式分解成为几个数据片,分片模式正是用于完成此项工作的。

(4)分布模式。分布式数据库的本质特性就是数据分布在不同的物理位置。分布模式的主要职责是定义数据片段(即分片模式的处理结果)的存放节点。

(5)局部概念模式。局部概念模式是局部数据库的概念模式。

(6)局部内模式。局部内模式是局部数据库的内模式。

简单概括为:

  • 主从复制

  • 读写分离

  • 分表分库

5 分布式缓存

是基于内存的数据库,在执行任何操作时,一般没有磁盘的低速操作,所以性能很快。

数据操作只有一个线程,保证各事务的原子性和一致性。

用作缓存组件时,其基于内存的读写特性,比基于磁盘读写的数据库性能要高很多,适合缓存高频热点的数据,来提高读性能。这样可以降低对数据库服务器的查询请求,提高系统性能

由于存在“一份数据存放了多个位置”,所以要考虑数据的一致性问题。

读写数据的基本步骤为:

  • 读数据

      根据key读缓存读取成功则直接返回:
      若key不在缓存中时,根据key 读数据库 ;
      读取成功后,写缓存
      成功返回。
    
  • 写数据

      根据key值写数据库;
      成功后更新缓存key值;
      成功返回
    

6 小结

我们知道大致的三大类别后,若有兴趣可以继续深入研究,比如缓存的数据类型,过期策略,持久化的不同方式对性能和数据安全的影响。

目录
相关文章
|
18天前
|
存储 SQL BI
毫秒级查询性能优化实践!基于阿里云数据库 SelectDB 版内核:Apache Doris 在极越汽车数字化运营和营销方向的解决方案
毫秒级查询性能优化实践!基于阿里云数据库 SelectDB 版内核:Apache Doris 在极越汽车数字化运营和营销方向的解决方案
毫秒级查询性能优化实践!基于阿里云数据库 SelectDB 版内核:Apache Doris 在极越汽车数字化运营和营销方向的解决方案
|
6天前
|
存储 关系型数据库 MySQL
MySQL数据库进阶第三篇(MySQL性能优化)
MySQL数据库进阶第三篇(MySQL性能优化)
|
16天前
|
缓存 监控 关系型数据库
优化数据库查询性能的五个技巧
在当今互联网时代,数据库查询性能是开发人员面临的重要挑战之一。本文将介绍五个有效的技巧,帮助开发人员优化数据库查询性能,提升系统的响应速度和稳定性。
|
5天前
|
SQL 缓存 监控
✅系统日活递增,如何优化提升大规模数据库
数据库性能优化涵盖硬件升级(如SSD、内存)、数据库设计简化、SQL查询优化、索引管理、缓存利用(如Redis)、负载均衡(读写分离、集群)、分区分片、备份恢复策略及性能监控。综合调整这些方面可提升系统性能和可用性。[MySQL索引设计][1]和[SQL优化实践][2]是深入学习的好资源。
|
9天前
|
存储 Cloud Native 物联网
数据库技术前沿探索:架构、优化与行业实践
一、引言 在信息化和数字化的浪潮中,数据库技术作为企业核心竞争力的关键要素,其重要性不言而喻
|
16天前
|
数据可视化 Linux 数据库
探索 Linux 命令 `db_tuner`:优化数据库性能的利器
`db_tuner` 是一个假设的 Linux 工具,用于数据库性能优化,提供状态检查、查询分析、配置调优、索引建议及报告生成等功能。虽然不是真实命令,但类似工具如 `mysqltuner` 可实现这些功能。通过安装和运行 `db_tuner`,DBA 可以提升数据库性能,解决瓶颈问题。
|
17天前
|
存储 SQL 关系型数据库
MySQL数据库——SQL优化(1/3)-介绍、插入数据、主键优化
MySQL数据库——SQL优化(1/3)-介绍、插入数据、主键优化
228 1
|
4天前
|
SQL 缓存 关系型数据库
数据库优化 - 实例优化
数据库优化 - 实例优化
9 0
|
9天前
|
SQL 存储 关系型数据库
深入理解MySQL:数据库管理与性能优化
第一章:MySQL基础 MySQL概述:简要介绍MySQL的历史、特点和应用领域
|
9天前
|
SQL 关系型数据库 MySQL
精通MySQL:从数据库管理到性能优化
第一章:MySQL入门 MySQL简介:了解MySQL的起源、发展历程以及在Web开发中的重要性