mysql优化主要从以下几个层次进行:sql及索引优化、库表结构优化、系统配置优化、硬件优化。从下到上成本越来越高、效果越来越低,推荐进行从下到上逐层优化。
sql及索引优化:
1、通过慢查询日志分析哪些sql需要优化,推荐使用mysql官方提供的工具mysqldumpslow进行慢查询日志分析,也可以使用pt-query-digest等第三方工具进行慢查询日志分析。
2、通过explain关键字查看sql执行计划,优化全表扫描、临时表、文件排序等灰常影响性能的地方。
3、建立索引,但不是越多越好。推荐使用pt-index-usage进行索引分析。
数据库表结构优化:
1、使用合适的数据类型和字段长度,尽量减少text等类型的使用。
2、使用合适的表存储引擎,innodb还是myisam是需要根据实际情况分析的。
3、数据库表的垂直和水平切分。垂直切分通常将不频繁查询的大字段抽取一张从表进行存储;水平切分通常按照时间或者地域维度切分成表结构一样的多张表。
系统配置:
1、操作系统层面:配置iptable 、 最大文件读写个数等。
2、mysql配置:使用生产环境、配置读写最大线程数、配置innodb缓存池大小等。
硬件优化:
通常选取核数较少但频率较高的CPU、raid(0-5)存储方案。