mysql执行过程.png
mysql调优总的来说从以下三方面入手:
一 、查询优化、索引优化、库表结构优化
1. 查询性能优化
1.1) 优化数据访问:
1、是否向数据库请求了不需要的数据
2、mysql是否在扫描额外的记录
1.2)重构查询的方式:
1、 一个复杂查询还是多个简单查询
2、切分查询:有时候对于一个大查询我们需要“分而治之”,将大查询切分成小查询,每个查询功能完全一样,只完成一小部分,每次只返回一小部分查询结果。删除旧的数据就是一个很好的例子。
3、分解关联查询(分解join查询)
2. 创建高性能索引
2.1 ) 独立的列:“独立的列”是指索引不能是表达式的一部分,也不能函数的参数。
2.2 ) 前缀索引和索引选择性:索引的选择性是指,不重复的索引值(也成为基数,cardinality)和数据表的记录总数(#T)的比值,范围在1/#T到1之间。索引的选择性越高则查询效率越高,因为选择性高的索引可以让MySql在执行时过滤掉更多的行。唯一索引的选择性是1,这是最好的索引选择性,性能也是最好的。
2.3) 多列索引
2.4) 选择合适的索引顺序
2.5) 覆盖索引
3. 库表结构优化
为列选择合适的数据类型、混用范式和反范式化、创建缓存表和汇总表、
二、优化mysql服务器配置
基础配置:缓存池大小、日志文件大小
三、操作系统和硬件优化
CPU、内存、硬盘等方面