MySQL优化
原因
- 网络
- CPU
- 锁
慢查询日志
配置文件
my.cnf
/etc/mysql/conf.d/mysql.cnf
[mysqld]
slow_query_log = ON
slow_query_log_file = /var/lib/mysql/instance-1-slow.log
long_query_time = 2
第一个参数是开启慢查询日志
第二个参数是设置位置
第三个的要记录的查询时间 单位s
慢查询分析工具
mysqldumpslow
该工具是慢查询自带的分析慢查询工具,一般只要安装了mysql,就会有该工具;
t总时间 c总次数 i锁的时间
mysqldumpslow -s c -t 10 /var/run/mysqld/mysqld-slow.log # 取出使用最多的10条慢查询
mysqldumpslow -s t -t 3 /var/run/mysqld/mysqld-slow.log # 取出查询时间最慢的3条慢查询
mysqldumpslow -s t -t 10 -g “left join” /database/mysql/slow-log # 得到按照时间排序的前10条里面含有左连接的查询语句
mysqldumpslow -s r -t 10 -g 'left join' /var/run/mysqld/mysqld-slow.log # 按照扫描行数最多的
优化方式
服务器硬件
高性能CPU和内存
固态硬盘
MySQL服务器优化
操作系统:linux环境!
配置缓冲区、IO、并发
SQL本身优化
子查询(嵌套):使用子查询进行SELECT语句嵌套查询,可以一次完成很多逻辑上需要多个步骤才能完成的SQL操作,执行效率并不高,MYSQL需要创建临时表
连接查询:不需要建立临时表,因此其速度比子查询快
连接查询效率高于子查询
反范式设计
适当增加冗余字段
以空间换时间
索引优化
适当添加索引