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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 【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 小结

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

目录
相关文章
|
21天前
|
存储 缓存 监控
数据库优化技术:提升性能与效率的关键策略
【10月更文挑战第15天】数据库优化技术:提升性能与效率的关键策略
46 8
|
1天前
|
存储 SQL 数据库
深入浅出后端开发之数据库优化实战
【10月更文挑战第35天】在软件开发的世界里,数据库性能直接关系到应用的响应速度和用户体验。本文将带你了解如何通过合理的索引设计、查询优化以及恰当的数据存储策略来提升数据库性能。我们将一起探索这些技巧背后的原理,并通过实际案例感受优化带来的显著效果。
11 4
|
2天前
|
SQL 缓存 监控
数据库性能优化指南
数据库性能优化指南
|
3天前
|
SQL druid 数据库
如何进行数据库连接池的参数优化?
数据库连接池参数优化包括:1) 确定合适的初始连接数,考虑数据库规模和应用需求;2) 调整最大连接数,依据并发量和资源状况;3) 设置最小空闲连接数,平衡资源利用和响应速度;4) 优化连接超时时间,确保系统响应和资源利用合理;5) 配置连接有效性检测,定期检查连接状态;6) 调整空闲连接回收时间,适应访问模式并配合数据库超时设置。
|
5天前
|
缓存 监控 NoSQL
数据库如何进行性能优化?
【10月更文挑战第31天】数据库如何进行性能优化?
14 3
|
11天前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
23 7
|
7天前
|
SQL 缓存 监控
数据库优化
【10月更文挑战第29天】数据库优化
17 1
|
11天前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
16 5
|
8天前
|
缓存 关系型数据库 MySQL
如何优化 MySQL 数据库的性能?
【10月更文挑战第28天】
28 1
|
10天前
|
XML Java 数据库连接
如何使用HikariCP连接池来优化数据库连接管理
在Java应用中,高效管理数据库连接是提升性能的关键。本文介绍了如何使用HikariCP连接池来优化数据库连接管理。通过引入依赖、配置参数和获取连接,你可以显著提高系统的响应速度和吞吐量。 示例代码展示了从配置到使用的完整流程,帮助你轻松上手。
39 3
下一篇
无影云桌面