【SQL】MySql常见的性能优化方式

MySQL性能优化的常用方式及对比说明

  • 一、引言
  • 二、MySQL性能优化的常用方式及对比说明
    • [1. 索引优化](#1. 索引优化)
      • [1.1 合理创建索引​](#1.1 合理创建索引)
      • [1.2 ​覆盖索引​](#1.2 覆盖索引)
      • [1.3 ​索引下推](#1.3 索引下推)
    • [2. SQL语法优化](#2. SQL语法优化)
      • [2.1 ​避免低效操作​](#2.1 避免低效操作)
      • [2.2 ​分页优化​](#2.2 分页优化)
      • [2.3 ​JOIN优化​](#2.3 JOIN优化)
    • [3. 配置与架构优化](#3. 配置与架构优化)
      • [3.1 参数调优​](#3.1 参数调优)
      • [3.2 ​读写分离与分库分表​](#3.2 读写分离与分库分表)
      • [3.3 ​缓存机制​](#3.3 缓存机制)
    • [4. 存储与维护优化](#4. 存储与维护优化)
      • [4.1 ​存储引擎选择​](#4.1 存储引擎选择)
      • [4.2 定期维护​](#4.2 定期维护)
  • 三、对比总结

一、引言

二、MySQL性能优化的常用方式及对比说明

1. 索引优化

1.1 合理创建索引​

  • 方式​ :为高频查询字段(如WHERE、JOIN、ORDER BY中的列)创建索引,优先使用联合索引并遵循最左前缀原则。
  • 对比优势:减少全表扫描,提升查询速度,但过多索引会增加写入开销(如INSERT/UPDATE/DELETE)。
  • 适用场景:查询频繁但数据更新较少的表,如订单表、用户表。

1.2 ​覆盖索引​

  • 方式:通过联合索引包含查询所需字段,避免回表操作。
  • 对比优势:减少磁盘I/O,但需牺牲索引存储空间。
  • 适用场景​:高频查询且字段固定的场景,如统计类查询。

1.3 ​索引下推

  • 方式:在索引遍历时提前过滤非索引字段条件,减少回表次数。
  • 对比优势:提升模糊查询效率(如LIKE 'xx%'),仅适用于二级索引。

2. SQL语法优化

2.1 ​避免低效操作​

  • ​方式​:避免全表扫描 SELECT *等、隐式类型转换、函数操作字段、前导通配符(LIKE '%abc%)
  • 对比优势​:减少CPU和I/O消耗。

2.2 ​分页优化​

  • 方式 :使用分页或延迟关联,避免LIMIT 偏移量过大问题。
    对比优势:减少临时表生成,但需业务支持连续ID或时间戳排序。
sql 复制代码
# 示例
SELECT * FROM login_logs WHERE id > 1000000 ORDER BY id LIMIT 100;

2.3 ​JOIN优化​

  • ​方式:大小表关联时,优先JOIN,避免子查询。(同Hive或大数据框架的MAPJOIN一样,避免大小表间数据倾斜和减少shuffle)
  • ​对比优势:减少中间结果集大小。

3. 配置与架构优化

3.1 参数调优​

  • 核心参数:
sql 复制代码
innodb_buffer_pool_size:设置合理的物理内存,提升缓存命中率。
max_connections:合理设置最大连接数
  • 对比优势:提升吞吐量,比较吃硬件资源

3.2 ​读写分离与分库分表​

  • 方式
    • 垂直拆分:比如按业务模块拆分,如用户主库、订单库
    • 水平拆分:按哈希或范围分片
  • 对比优势:解决单表数据量过大问题,但增加事务管理和查询复杂度。

3.3 ​缓存机制​

  • 方式​:Redis缓存热点数据,或开启MySQL查询缓存,和版本关系较大
  • 对比优势:减少数据库压力。

4. 存储与维护优化

4.1 ​存储引擎选择​

  • ​方式:InnoDB支持事务和行锁,适合高并发写入,MyISAM适合读密集型场景。
  • ​对比优势:需选择合适的业务场景。

4.2 定期维护​

  • 方式​:
    • 重建索引(OPTIMIZE TABLE),清理碎片,清理历史数据等;
    • 冷热数据分离,冷数据转至成本更低数据库等;
  • ​对比优势:可能引起短暂性能波动,但表结构稳定

三、对比总结

​优化方向​​ 常用方法 适用场景 优势​​ 劣势
​索引优化 联合索引、覆盖索引 高频查询 较大提升查询速度 增加写入开销,需定期维护
SQL语法优化 分页优化、避免全表扫描 复杂查询或大数据量分页 简单,减少资源消耗 统一约定规范
配置与架构优化 参数调优、分库分表 高并发或超大规模数据 提升系统吞吐量 复杂度高
存储与硬件 SSD、内存升级 I/O密集型或预算充足的环境 成本高,需停机维护 监控和人力成本高
相关推荐
胡耀超4 分钟前
2、CPU深度解析:从微架构到性能优化
python·性能优化·架构·arm·cpu·x86·多核心
yuyue_99935 分钟前
理解 mvcc
mysql
码码哈哈爱分享3 小时前
MariaDB 与 MySQL 区别
数据库·mysql·mariadb
爱敲代码的TOM3 小时前
深入MySQL底层1-存储引擎与索引
数据库·mysql
sz-lcw6 小时前
MySQL知识笔记
笔记·mysql·adb
牛奶咖啡136 小时前
关系数据库MySQL的常用基础命令详解实战
数据库·mysql·本地远程连接到mysql·创建mysql用户和密码·修改mysql用户的密码·设置mysql密码的使用期限·设置和移除mysql用户的权限
编程武士6 小时前
从50ms到30ms:YOLOv10部署中图像预处理的性能优化实践
人工智能·python·yolo·性能优化
计算机编程小央姐7 小时前
【Spark+Hive+hadoop】基于spark+hadoop基于大数据的人口普查收入数据分析与可视化系统
大数据·hadoop·数据挖掘·数据分析·spark·课程设计
木心爱编程7 小时前
线程亲和性:性能优化的双刃剑
性能优化
珍宝商店7 小时前
前端老旧项目全面性能优化指南与面试攻略
前端·面试·性能优化