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

mysql学习笔记-数据库其他调优策略

1、如何定位调优问题

用户的反馈(主要)
日志分析(主要)
服务器资源使用监控
数据库内部状况监控

2、调优的维度和步骤

第1步:选择适合的 DBMS
第2步:优化表设计
第3步:优化逻辑查询
第4步:优化物理查询(在这个部分中,我们需
要掌握的重点是对索引的创建和使用。)
第5步:使用 Redis 或 Memcached 作为缓存
第6步:库级优化
6.1 读写分离
在这里插入图片描述
6.2 数据分片
在这里插入图片描述
在这里插入图片描述

3、优化数据库结构

3.1拆分表:冷热数据分离
3.2 增加中间表
3.3 增加冗余字段
3.4 优化数据类型
3.5 优化插入记录的速度
3.6 使用非空约束
3.7 分析表、检查表与优化表

4、大表优化

4.1 限定查询的范围(禁止不带任何限制数据范围条件的查询语句)
4.2 读/写分离
4.3 垂直拆分
分库:如果数据库中的数据表过多,可以采用 垂直分库 的方式,将关联(业务类型相同)的数据表部署在同一个数据库上。
如果数据表中的列过多,可以采用 垂直分表 的方式,将一张数据表分拆成多张数据表,把经常一起使用的列放到同一张表里。
垂直拆分的优点: 可以使得列数据变小,在查询时减少读取的Block数,减少!/0次数。此外,直分区可以简化表的结构,易于维护。
垂直拆分的缺点: 主键会出现冗余,需要管理冗余列,并会引起 JOIN 操作。此外,垂直拆分会让事务变得更加复杂。
4.4 水平拆分
①尽量控制单表数据量的大小,建议控制在1000万以内。
②将大的数据表按照 某个属性维度 分拆成不同的小表,每张小表保持相同的表结构。比如你可以按照年份来划分,把不同年份的数据放到不同的数据表中。2017年、2018年和 2019 年的数据就可以分别放到三张数据表中。
③水平分表仅是解决了单一表数据过大的问题,但由于表的数据还是在同一台机器上,其实对于提升MySQL并发能力没有什么意义,所以 水平拆分最好分库,从而达到分布式的目的。
在这里插入图片描述


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

相关文章:

  • 力扣hot100-->滑动窗口、贪心
  • 几种常见的求特殊方程正整数解的方法和示例
  • Spring 源码学习(七)——注解后处理器-2
  • 计算机网络 (59)无线个人区域网WPAN
  • 二叉树相关oj题 1. 检查两颗树是否相同。
  • Vue 3 项目结构及核心文件
  • 二分查找 分块查找
  • redis报错如何解决
  • 戴尔电脑设置u盘启动_戴尔电脑设置u盘启动多种方法
  • capter7:全局内存的合理使用
  • C++ 线程安全之互斥锁
  • 《机器学习数学基础》补充资料:超平面
  • 【Unity3D】《跳舞的线》游戏的方块单方向拉伸实现案例
  • 关于hexo-deploy时Spawn-Failed的几种解决方案
  • Mysql面试题----什么是垂直分表、垂直分库、水平分库、水平分表
  • 【华为OD-E卷 - 计算网络信号 100分(python、java、c++、js、c)】
  • 「 机器人 」扑翼飞行器控制方法浅谈
  • Go的垃圾回收(GC)机制
  • 如何在 Spring Boot 中实现自定义属性
  • 计算机视觉算法实战——驾驶员安全带检测
  • 2022年全国职业院校技能大赛网络系统管理赛项模块A:网络构建(样题8)
  • 深入理解 HTML DOM:文档对象模型详解
  • windows系统改变vscode的插件位置
  • 【Bug 记录】el-sub-menu 第一次进入默认不高亮
  • 【17】组织测试(一)
  • 组件封装-List