Tianyi's Blog Tianyi's Blog
首页
  • 计算机网络
  • 操作系统
  • 计算机科学
  • Nginx
  • Vue框架
  • 环境配置
  • Java
  • JVM
  • Spring框架
  • Redis
  • MySQL
  • RabbitMQ
  • Kafka
  • Mirror Sites
  • Dev Tools
  • Docker
  • Jenkins
  • Scripts
  • Windows
  • 科学上网
  • 旅行
  • 网站日记
  • 软件
  • 电子产品
  • 杂野
  • 分类
  • 友情链接
GitHub (opens new window)

Tianyi

一直向前,永不停止
首页
  • 计算机网络
  • 操作系统
  • 计算机科学
  • Nginx
  • Vue框架
  • 环境配置
  • Java
  • JVM
  • Spring框架
  • Redis
  • MySQL
  • RabbitMQ
  • Kafka
  • Mirror Sites
  • Dev Tools
  • Docker
  • Jenkins
  • Scripts
  • Windows
  • 科学上网
  • 旅行
  • 网站日记
  • 软件
  • 电子产品
  • 杂野
  • 分类
  • 友情链接
GitHub (opens new window)
  • Java

  • Golang

  • JVM的奇妙世界

  • Spring

  • Spring增强封装

  • Redis

  • MySQL

    • MySQL其实很简单-frank
    • mysql常用命令
    • mysql从根上学习
    • MySQL安装
    • 备份、导入MySQL数据库
    • MySQL 优化思路
      • 索引优化
      • 配置优化
      • 分流思路
  • RabbitMQ

  • Kafka

  • 分享

  • 后端
  • MySQL
tianyi
2025-08-30
目录

MySQL 优化思路

想要优化一个 MySQL 的查询问题可以从以下几个层面着手

  1. MySQL 查询层,与 SQL、索引强相关
  2. 建表语句,贴合业务做估算,能小不大,能定不变
  3. 配置信息,例如最大连接数、buffer pool 参数
  4. 分流思路:MQ 做削峰、Redis 做缓存

# 索引优化

索引是一个通过快速定位指定头节点的数据结构(树)解决索引问题首先从解决回表次数入手

  • 回表次数优化
    • 覆盖索引:创建索引去避免回表
    • 索引下推:创建组合索引去减少回表的范围/次数
    • 建表时要合理设计表,根据业务以及单行数据的量去推测一行数据如何设计比较合理,能小尽量小,这能够提高回表的效率(一次 IO只能捞一页数据到 buffer pool,减少单行数据的大小就等于一次 IO 能够捞到更多的数据到 buffer pool,提高了筛选效率)
  • 索引优化
    • 根据业务去设计索引字段
    • 索引字段不宜过多(最好不超过 7 个)

# 配置优化

  • 由于配置的最大连接数过小会导致一部分的线程长时间处于等待,造成长时间等待可用资源释放的问题
  • buffer pool 默认参数很小,如果有专用的数据库服务器,可以将 buffer pool 大小设置为物理内存的 80%

# 分流思路

  • 流量大尖刺问题,使用 MQ 缓解瞬时请求压力
  • Redis 做缓存直接减小 MySQL 的访问压力
完善页面 (opens new window)
备份、导入MySQL数据库
RabbitMQ

← 备份、导入MySQL数据库 RabbitMQ→

最近更新
01
JDK
02-23
02
BadTasteCode && 优化
09-11
03
Gradle 实践操作指南及最佳实践
09-11
更多文章>
Theme by Vdoing | Copyright © 2021-2025 Tandy | 粤ICP备2023113440号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式