当前位置: 首页 > article >正文

系统架构设计师—案例分析—数据库篇—数据库性能优化

文章目录

  • 集中式数据库
    • 反规范化设计
      • 分类
      • 保证数据的一致性方法
  • 分布式数据库
    • 主从复制
    • 读写分离
    • 分表
    • 分库

集中式数据库

反规范化设计

优点:

  • 避免进行表之间的连接操作,可以提高数据操作的性能。

缺点:

  • 数据的重复存储,浪费磁盘空间。
  • 会产生数据不一致性问题。

分类

类型说明作用
增加冗余列指在多个表中具有相同的列。在查询时避免连接操作。
增加派生列增加的列可用通过表中其他数据计算生成。在查询时减少计算量,从而加快查询速度。
重新组表如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。在查询时减少连接,从而加快查询速度。
水平分割表按记录进行分割,把数据放到多个独立的表中。主要用于表数据规模很大、表中数据相对独立或数据需要存放到多个介质上使用的场景。
垂直分割表对表进行分割,将主键与部分列放到一个表中,主键与其他列放到另一个表中。在查询时减少I/O次数,以提高查询效率。

保证数据的一致性方法

  1. 触发器
  2. 事务机制保证
  3. 应用保证
  4. 批处理脚本

分布式数据库

主从复制

主从复制,建立一个和主数据库完全一样的数据库环境,称为从数据库。

  • 做数据的热备:作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。
  • 架构的扩展:业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个及其的I/O性能。
  • 读写分离:使数据库能支持更大的并发。

读写分离

读写分离,设置不同的主/从数据库分别负责不同的操作。

  • 主数据库负责数据的写操作。
  • 从数据库负责数据的读操作。

通过角色分担的策略,分别提升读写性能,有效减少数据并发操作的延迟。

分表

分表,也叫分片,解决并发能力、I/O性能提升。
将一张大表分成若干小表,业务同时访问多个表。
分表是重在单个实例内部,一张表拆分称多个表。

  • 垂直切分
  • 水平切分

分库

分库,将原本存放在一个实例上众多分类的数据(表),分开存放到不同的实例上。有利于差异化管理。


http://www.kler.cn/a/587417.html

相关文章:

  • java泛型通配符?及上下界(extends,super)保证安全性、灵活性、可读性
  • VSCode C语言环境(多文件一键运行)
  • 面试求助:接口测试用例设计主要考虑哪些方面?
  • Linux 》》Ubuntu 18 LTS 之后的版本 修改IP地址 主机名
  • Java使用JDBC连接操作Sqlite 笔记250314
  • 工程化与框架系列(34)--前端重构技巧指南
  • 蓝耘携手通义万象 2.1 图生视频:开启创意无限的共享新时代
  • 基于Python+Flask+MySQL+HTML的爬取豆瓣电影top-250数据并进行可视化的数据可视化平台
  • 【论文精读】DifFace: Blind Face Restoration with Diffused Error Contraction
  • 【C++】如何高效掌握UDP数据包解析
  • 设计模式之责任链设计模式
  • 2.2.3 TCP—UDP-QUIC
  • 星越L_内后视镜使用讲解
  • 电子招采软件系统,如何实现10年可追溯审计
  • Spring、Spring Boot、Spring Cloud 的区别与联系
  • 矫平机:解锁精密制造的工业之手
  • (学习总结28)Linux 基本命令3
  • odbus TCP转Modbus RTU网关快速配置案例
  • 深入理解Spring MVC:构建灵活的Web应用
  • python3GUI--模仿安卓桌面 By:PyQt5(附下载地址)