索引优化 ✅
- 避免过度索引:每个索引都会占用存储空间并可能降低写入速度,仅对高频查询字段创建索引
- 使用复合索引:如
(user_id, create_time)
可提升多条件查询效率 - 定期分析索引使用情况:通过
SHOW INDEX FROM table_name
检查冗余索引
查询优化 🔍
- 减少 SELECT * 使用:仅选择必要字段可降低数据传输量
- 避免全表扫描:通过添加 WHERE 条件或使用索引加速查询
- 优化 JOIN 操作:确保连接字段有索引且数据类型一致
配置调整 ⚙️
- 调整缓冲池大小:根据服务器内存设置
innodb_buffer_pool_size
- 优化事务处理:合理设置
autocommit
和事务隔离级别 - 启用慢查询日志:通过
slow_query_log
定位性能瓶颈
缓存策略 🧠
- 使用 Query Cache:缓存重复查询结果(注意:MySQL 8.0 已移除)
- 应用 Redis 缓存:对高频读取数据进行二级缓存
- 优化结果集缓存:通过
SELECT ... INTO OUTFILE
实现批量缓存
分库分表 📁
- 垂直分库:按业务模块拆分表(如用户表/订单表)
- 水平分表:按时间或地域等维度拆分数据
- 使用中间件:如 MyCat 实现分库分表路由
监控工具 📊
- 使用 Performance Schema:监控查询执行计划
- 安装 MySQLTuner:自动优化配置参数
- 集成 Grafana:可视化监控数据库性能指标