MySQL解决方案(优化方案)
2025-10-17 11:19:42 0 举报
AI智能生成
MySQL解决方案(优化方案)--百万级数据优化方案和优化角度
作者其他创作
大纲/内容
SQL语句与查询优化(成本最低,见效最快)
善用Explain
possible-key & key
row
type 是否是ALL ?
Extra
特别注意:Using filesort(需要额外排序)和Using temporary(使用了临时表),这通常是性能杀手。
避免索引失效
where cond 计算、使用函数
联合索引左匹配
左、左右的模糊匹配
隐式类型转换
or 中右cond非索引,索引失效
统计信息、数据量选择,可能走全表、或者其他效率差的索引
优化访问
避免Select * 减少IO
合理使用覆盖索引
优化Join:小表驱动大表,大表命中索引
优化分页查询、避免深分页
数据库设计优化(治本之策)
合适的数据类型
避免大类型,能小则小
Num类型 执行速度大于 Varchar
避免Null
字符集选择
确定不存储中文、可以用更小的字符集、比如lanti等
架构与系统层面优化(应对更高并发和数据量)
硬件与系统配置
把机械硬盘换成SSD
增加BufferPool、提升缓存命中率
MySQL配置优化(my.cnf)
innodb_buffer_pool_size、控制Buffer
增大Redo Log文件大小,减少IO次数(但是会增加系统崩溃恢复时间)通常1~4G
max_connections 最大连接数、(过高可能导致激烈并发冲突)
query_cache 查询缓存(高并发写场景,影响性能,MySQL8已经默认关闭了)
读写分离(主从复制)
主库负责增删改,从库负责查询
但是会有延迟问题
CAP考虑
分库分表(Sharding)
垂直拆分
水平拆分
问题:
1.分布式事务
2. 跨分片JOIN
3. 跨分片排序分页
4. 分片键的选择至关重要
1.分布式事务
2. 跨分片JOIN
3. 跨分片排序分页
4. 分片键的选择至关重要
引入缓存(热点数据)
Redis, Memcached
一致性问题
旁路写
延迟双删
雪崩、击穿、穿透
0 条评论
下一页