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

数据库其它调优策略

文章目录

  • 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.lryc.cn/news/247892.html

相关文章:

  • 【AI认证笔记】NO.2人工智能的发展
  • Python与设计模式--观察者模式
  • Elasticsearch底层原理分析——新建、索引文档
  • ts实现合并数组对象中key相同的数据
  • C语言--根据成绩判断等级
  • Rust多线程任务,发现有些线程一直获取不到锁【已解决】
  • 【区块链】产品经理的NFT初探
  • 香港服务器减少延迟的几种方法
  • PowerShell命令小记
  • C语言小练
  • Webhook端口中的自签名身份验证
  • CSS预处理器(如Sass或Less):变量、嵌套规则和混合器等高级功能
  • 【Linux】Linux第一个小程序 --- 进度条
  • 每日一练:约瑟夫生者死者小游戏
  • 双指针算法(题目与答案讲解)
  • python服装电商系统vue购物商城django-pycharm毕业设计项目推荐
  • 数据治理技术:研究现状与数据规范
  • 一文彻底理解索引下推
  • Springboot3+vue3从0到1开发实战项目(一)
  • [字符串操作] 有年代的病历单
  • 怎么批量提取文件名字到Excel中?
  • QT搭建的Ros/librviz的GUI软件
  • Docker 概述与安装
  • JS作用域与作用域链
  • elmentui 查看大图组件 点击图片关闭弹窗方法
  • 蓝桥杯官网练习题(最长子序列)
  • Make sure that using this pseudorandom number generator is safe here.
  • 【C/C++】常见模拟题题解
  • TikTok 购物和直播的 5 个简单技巧
  • 神经网络中BN层简介及位置分析