MySQL 数据库优化极简教程:快速提升性能

一、基础优化(10 分钟上手)

1. 配置文件(my.cnf/my.ini)核心调整

ini 复制代码
max\_connections = 1000           连接数上限(默认151)

innodb\_buffer\_pool\_size = 2G     InnoDB缓存(物理内存50%-70%)

slow\_query\_log = 1               开启慢查询日志

long\_query\_time = 2              记录>2秒的SQL

innodb\_flush\_log\_at\_trx\_commit = 2   读写分离场景提升性能

修改后重启:

systemctl restart mysqld

(Linux)/ 服务面板重启(Windows)

2. 表结构优化

  • 数据类型:手机号用CHAR(11)、年龄用TINYINT、时间用DATETIME

  • 避免TEXT/BLOB存大文件,改用文件服务器存路径

  • 必加主键(自增 INT 优先),查询频繁字段加索引,多条件查用联合索引(遵循最左前缀)

二、SQL 优化(避坑即提速)

1. 慢查询定位

  • 查日志:tail -f /var/log/mysql/slow.log(Linux)

  • 分析 SQL:EXPLAIN + 你的SQL(看type是否为 ALL,key是否为 NULL)

2. 核心优化技巧

反例 正例
SELECT * FROM user WHERE id=1 SELECT id,username FROM user WHERE id=1
WHERE DATE(create_time)='2024-01-01' WHERE create_time BETWEEN '2024-01-01 00:00:00' AND '2024-01-01 23:59:59'
WHERE id IN (SELECT user_id FROM order) SELECT u.* FROM user u JOIN order o ON u.id=o.user_id
LIMIT 10000, 20 WHERE id>10000 LIMIT 20

3. 索引避坑

  • 不生效场景:!=IS NOT NULL、字符串不加引号、联合索引不满足最左前缀

  • 小表(不建索引,频繁更新字段慎建索引

三、进阶优化(生产环境必备)

1. 读写分离

  • 主库写(INSERT/UPDATE/DELETE),从库读(SELECT)

  • 核心步骤:主库开二进制日志→从库配置 server-id→主库建复制用户→从库执行同步命令→启动复制

2. 分库分表

  • 单表 > 1000 万行用:

    • 水平分表:按时间(订单表)、ID 范围 / 哈希(用户表)

    • 垂直分表:大表拆小(用户基本表 + 详情表)

  • 工具:Sharding-JDBC(轻量)、MyCat(中间件)

3. 硬件 / 系统优化

  • 用 SSD、数据与日志分盘存

  • Linux 关闭 Swap:swapoff -a

  • 调整文件描述符:echo "* soft nofile 65535" >> /etc/security/limits.conf

四、优化验证

1. 关键指标(执行SHOW GLOBAL STATUS;

  • Threads_connected:连接数≤max_connections

  • Slow_queries:慢查询数越少越好

  • Innodb_buffer_pool_read_hit_rate:缓存命中率 > 99%

相关推荐
唐青枫4 天前
MySQL JSON 实战详解:从存储、查询、更新到 JSON_TABLE 与索引
sql·mysql
小满8784 天前
5.Mysql事务隔离级别与锁机制
mysql
元Y亨H4 天前
技术笔记:MySQL 字符集排序规则与大小写敏感性问题解决方案
mysql
这个DBA有点耶5 天前
GROUP BY优化全解:如何写出既不丢数据又飞快的分组查询
数据库·mysql·架构
掉头发的王富贵6 天前
【StarRocks】极限十分钟入门StarRocks
数据库·sql·mysql
SamDeepThinking6 天前
一条UPDATE语句在MySQL 8.0中到底加了几把锁?
后端·mysql·程序员
李白客8 天前
KES新版MySQL兼容能力再升级意味着什么?
mysql·国产数据库
Jim6009 天前
【吃透 MySQL InnoDB连载】第 1 章・解密线上数据库高频故障
mysql
GreatSQL10 天前
gt-checksum v4.0.0 新功能解读系列文章(4):SSL 加密连接——数据校验传输安全再升级
mysql