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

数据库其它调优策略

文章目录

  • 1. 优化MySQL服务器
  • 2. 优化数据库结构
    • 2.1 差分表:冷热数据分离
  • 3. 大表优化
    • 3.1 读/写分离
    • 3.2 垂直拆分
    • 3.3 水平拆分

1. 优化MySQL服务器

电商平台,双十一,CPU使用率达到99%,系统的计算资源已经耗尽,再也无法处理任何新的订单了。
这个时候,我们想到了对系统参数进行调整,一共调整3个系统参数,分别是

  • InnoDB_flush_log_at_trx_commit:默认为0,改为2,这样就不用每次提交事务的时候都启动磁盘读写了,而是每隔一秒
  • lnnoDB_buffer_pool_size:InnoDB存储引擎使用缓存来存储索引数据,可以加载到缓存区的索引和数据量就越多,需要的磁盘读写就越少。
  • lnnoDB_buffer _pool_instances:可以将InnoDB的缓存区分成几个部分,这样可以提高系统的并行处理能力,因为可以允许多个进程同时处理不同部分的缓存区。

2. 优化数据库结构

2.1 差分表:冷热数据分离

把1个包含很多字段的表拆分成2个或者多个相对较小的表,(热数掘):经常要进行查询或者更新操作。(冷数据):字段的使用频率却很低。冷热数据分离,可以减小表的宽度。查询是B+tree存放的索引和叶子节点的数据就少了,一次读取的就多了,性能就高了。

3. 大表优化

3.1 读/写分离

3.2 垂直拆分

垂直分库、垂直分表

  • 如果数据库中的数据表过多,可以采用垂直分库的方式,将关联的数据表部署在同一个数据库上。
  • 如果数据表中的列过多,可以采用垂直分表的方式,将一张数据表分拆成多张数据表,把经常一起使用的列放到同一张表里(冷热数据分离)

3.3 水平拆分

这里主要考虑业务数据的水平分表策略。将大的数据表按照某个属性维度分拆成不同的小表,每张小表保持相同的表结构。比如可以按照年份来划分,把不同年份的数据放到不同的数据表中。2017年、2018年和2019年的数据就可以分别放到三张数据表中。
在这里插入图片描述

下面补充一下数据库分片的两种常见方案:

  • 客户端代理:分片逻辑在应用端,封装在jar包中,通过修改或者封装JDBC层来实现。当当网的sharding-JDBC、阿里的TDDL是两种比较常用的实现。
  • 中间件代理:在应用和数据中间加了一个代理层。分片逻辑统一维护在中间件服务中。我们现在谈Mycat、360的Atlas、网易的DDB等等都是这种架构的实现。

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

相关文章:

  • 优选算法精品——双指针
  • 一个由Deno和React驱动的静态网站生成器
  • SpringBoot新闻稿件管理系统:架构与实现
  • 气象大模型学习笔记
  • LINUX_Ubuntu终端安装tools的命令
  • 基于 Canal + Elasticsearch 的业务操作日志解决方案
  • 【Openstack Train安装】四、MariaDB/RabbitMQ 安装
  • 深度学习毕设项目 深度学习 python opencv 动物识别与检测
  • Linux 基本语句_13_消息队列
  • Arduino驱动SHT4x温湿度传感器(温湿度传感器)
  • Python内置函数与标准库函数的详细解读
  • Kubernetes - Pod 拉取镜像报错 ImagePullBackOff
  • 【从浅识到熟知Linux】基本指令之rmdir和rm
  • leetcode 15. 三数之和
  • 如何快速生成项目目录结构树?
  • flink源码分析之功能组件(四)-slotpool组件II
  • 基于minio,上传sql文件后,使用通用查询接口查询并返回
  • 数据结构-02-链表
  • 对二分搜索的理解 Go语言版
  • 从 Elasticsearch 到 SelectDB,观测云实现日志存储与分析的 10 倍性价比提升
  • 智能化质量控制,三坐标尺寸SPC管理系统引领制造新潮流!
  • sqli-labs靶场详解(less32-less37)
  • 什么是主机安全,有什么作用?
  • Android Studio Giraffe-2022.3.1-Patch-3安装注意事项
  • @Value和@ConfigurationProperties的区别,以及@ConfigurationProperties的配置依赖
  • 详解前后端交互时PO,DTO,VO模型类的应用场景