Mysql性能调优

59 阅读1分钟

慢查询

显示慢查询开关是否打开

show variables like 'slow_query_log';

设置慢查询开关,0表示关闭,1表示打卡

set GLOBAL slow_query_log=1;

查询慢查询设置的时间和设置时间(默认是十秒钟,超过则为慢查询)

show variables like 'slow_query_time';

set GLOBAL slow_query_time=1;

查询日子存放的位置

show variables like '&slow_query_log_file%';

查询是否记录没有使用到索引的查询

show variables like '&slow_query_not_using_indexes%';

慢查询日子解读

image.png 语句从Time开始,到FROM 表名结束。 Time:表示具体查询语句的查询时间。

user@Host:表示用户。

Query_time:表示花费的时间。Lock_time:获得锁的时间。Rows_sent:得到结果的行数。Rows_enamined:扫描的条数。

timestamp:sql具体执行的时间戳。

Mysql分析过滤命令mysqldumpslow

mysqldumpslow -s(c,t,l,r,at)【s表示排序,c:次数,t:总时间,l:锁,r:结果次数,at:总时间/总次数】 10(表示前十个,自由设置) slow.log

执行计划

在SQL查询的前面加EXPLAIN关键字

id:select某张表就对应一个id.select_type:对应的查询类型。table:对应表。partitions:对应分区。type:单张表访问的方法。possible_keys:可能使用到的索引。key:实际使用的索引。key_len:实际使用索引的长度。ref:匹配对象。rows:行数。filtered:过滤的东西。extra:额外的其他内容

image.png

image.png