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

简介: 【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 小结

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

目录
相关文章
|
2月前
|
存储 人工智能 NoSQL
AI大模型应用实践 八:如何通过RAG数据库实现大模型的私有化定制与优化
RAG技术通过融合外部知识库与大模型,实现知识动态更新与私有化定制,解决大模型知识固化、幻觉及数据安全难题。本文详解RAG原理、数据库选型(向量库、图库、知识图谱、混合架构)及应用场景,助力企业高效构建安全、可解释的智能系统。
|
6月前
|
关系型数据库 MySQL 数据库连接
Django数据库配置避坑指南:从初始化到生产环境的实战优化
本文介绍了Django数据库配置与初始化实战,涵盖MySQL等主流数据库的配置方法及常见问题处理。内容包括数据库连接设置、驱动安装、配置检查、数据表生成、初始数据导入导出,并提供真实项目部署场景的操作步骤与示例代码,适用于开发、测试及生产环境搭建。
285 1
|
2月前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
215 6
|
9月前
|
存储 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:单机性能优化篇
阿里云PolarDB云原生数据库在TPC-C基准测试中,以20.55亿tpmC的成绩打破性能与性价比世界纪录。此外,国产轻量版PolarDB已上线,提供更具性价比的选择。
|
3月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
628 5
|
5月前
|
机器学习/深度学习 SQL 运维
数据库出问题还靠猜?教你一招用机器学习优化运维,稳得一批!
数据库出问题还靠猜?教你一招用机器学习优化运维,稳得一批!
176 4
|
5月前
|
SQL Java 应用服务中间件
数据库连接池详解及性能优化趋势
Sharding-JDBC所构建的Database Mesh与Service Mesh相互独立,协同工作。服务间的交互由Service Mesh Sidecar负责管理,而基于SQL的数据库访问则交由Sharding-JDBC-Sidecar处理。业务应用无需关心物理部署细节,实现真正的零侵入。Sharding-JDBC-Sidecar与宿主机生命周期绑定,非静态IP,确保了动态和弹性。尽管如此,数据运维操作仍可通过启动Sharding-JDBC-Server进程作为静态IP入口,借助命令行或UI客户端轻松完成。
|
9月前
|
SQL 关系型数据库 MySQL
如何优化SQL查询以提高数据库性能?
这篇文章以生动的比喻介绍了优化SQL查询的重要性及方法。它首先将未优化的SQL查询比作在自助餐厅贪多嚼不烂的行为,强调了只获取必要数据的必要性。接着,文章详细讲解了四种优化策略:**精简选择**(避免使用`SELECT *`)、**专业筛选**(利用`WHERE`缩小范围)、**高效联接**(索引和限制数据量)以及**使用索引**(加速搜索)。此外,还探讨了如何避免N+1查询问题、使用分页限制结果、理解执行计划以及定期维护数据库健康。通过这些技巧,可以显著提升数据库性能,让查询更高效流畅。
|
9月前
|
存储 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:单机性能优化篇
日前,阿里云PolarDB云原生数据库以超越原记录2.5倍的性能一举登顶TPC-C基准测试排行榜,以每分钟20.55亿笔交易(tpmC)和单位成本0.8元人民币(price/tpmC)的成绩刷新TPC-C性能和性价比双榜的世界纪录。 每一个看似简单的数字背后,都蕴含着无数技术人对数据库性能、性价比和稳定性的极致追求,PolarDB的创新步伐从未止步。「阿里云瑶池数据库」公众号特此推出「PolarDB登顶TPC-C技术揭秘」系列硬核文章,为你讲述“双榜第一”背后的故事,敬请关注!
登顶TPC-C|云原生数据库PolarDB技术揭秘:单机性能优化篇