MySQL性能优化:优化思路、查询优化、索引优化、存储优化、数据库结构优化、数据库结构优化
https://blog.csdn.net/weixin_41942838/article/details/111244411
MySQL大表优化方案
https://zhuanlan.zhihu.com/p/147615129
应急调优的思路:
针对突然的业务办理卡顿,无法进行正常的业务处理!需要立马解决的场景!
1.show processlist(查看连接session状态)
2.explain(分析查询计划),show index from tableName(分析索引)
3.show status like ‘%lock%’; 查询锁状态
常规调优的思路:
针对业务周期性的卡顿,例如在每天10-11点业务特别慢,但是还能够使用,过了这段时间就好了。
1.开启慢查询日志,运行一天
2.查看slowlog,分析slowlog,分析出查询慢的语句
3.按照一定优先级,进行一个一个的排查所有慢语句
4.分析top sql,进行explain调试,查看语句执行时间。
5.调整索引或语句本身。
字段:
1.尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNED
2.VARCHAR的长度只分配真正需要的空间
3.使用枚举或整数代替字符串类型
4.尽量使用TIMESTAMP而非DATETIME,
5.单表不要有太多字段,建议在20以内
6.避免使用NULL字段,很难查询优化且占用额外索引空间
7.用整型来存IP