GeekIBLi

MySQL性能调优

2021-08-19

1、使用【 覆盖索引 】避免回表锁造成的时间消耗

1、查询语句的时候避免使用select *

2、创建索引添加适当的列避免回表

2、使用【 联合索引 】区分度比较高的列放到前面

注意联合索引的最左匹配原则

3、对索引进行函数计算或者表达式计算会导致索引失效 🔒
4、利用子查询优化超多分页场景
5、explain命令查询执行计划 show profile查询执行的性能消耗

面试前必须知道的MySQL命令【expalin】 -3y

6、在事务开始后,事务内尽可能只操作数据库,减少锁持有时间
7、尽量避免字符串查询,如果允许的话可以使用Elasticsearch
8、如果优化都做了还是查询的很慢,可以做一些聚合表,线上的业务直接查聚合之后的数据
9、读写瓶颈问题

9.1 如果是单库的情况下,可以考虑读写分离,提升读/写的性能

9.2 主从结构下还是存在瓶颈的话,可以考虑分库分表

注意 分库分表下的id尽量保证递增

Tags: MySQL