【面试题】请你谈谈MySQL性能调优的方法
这个问题是一个开放性问题,本人这一段时间参加面试(2022.12.26)经常被问道......
刚刚开始我回答的很混乱!虽然真的知道MySQL性能调优的方法,也做过类似的工作,但是面试的时候回答起来没有条理~
所以在这里,本人总结了这一类问题的答题技巧、模板。大家可以瞅瞅~如果有更好的回答方式,可以评论区一起交流!
MySQL性能调优可以从4个方面来做
- 表结构和索引
- SQL语句优化
- MySQL参数优化
- 硬件及系统配置
这四点,从上到下优化成本越来越高,但是优化效果越来越差!
(1)表结构和索引
- 分库分表
- 读写分离
- 为字段选择合适的数据类型
- 适当的反范式设计
- 为查询操作创建必要的索引......
(2)SQL语句优化
- 通过慢查询分析需要优化的SQL语句,并进行优化
- 通过explain、profile这些工具去分析SQL的执行计划
- 避免使用select * 的查询,避免不必要的回表
-
尽量使用索引,避免全表扫描
(3)MySQL参数优化
- 设置Buffer_pool的大小,建议占总内存的50%~70%
- 设置刷盘策略,要平衡好数据安全性与性能之间的关系
超详细的mysql数据库参数优化,都总结在这里了 - 腾讯云开发者社区-腾讯云 (tencent.com)https://cloud.tencent.com/developer/article/1655879
(4)硬件及系统配置
- CPU的核心数
- 网卡
- 内存大小
- 磁盘的读写性能
另外,上述涉及到的内容及原理请看
【MySQL】史上最全的MySQL高性能优化总结_面向架构编程的博客-CSDN博客_高性能mysql本人之前写过许多关于MySQL性能优化的文章,在这里会将它们做一个大串讲~这里主要是讲解MySQL底层数据结构,索引优化,事务及其相关特性,MVCC机制,BufferPool缓存机制等内容。https://blog.csdn.net/weixin_43715214/article/details/128336750