赞
踩
show status like 'Com_%'
show status like 'Com_insert'
show status like 'Com_select'
show status like 'Com_update'
show status like 'Com_delete'
show status like 'Connections' //试图连接mysql服务器的次数
show status like 'Uptime' //服务器工作的时间
show STATUS like 'Slow_queries' //慢查询次数
e1xplain SELECT * FROM user
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CGvBqbk0-1626748162871)(C:\Users\15409\Desktop\QQ图片20210718172347.png)]
介绍一下每个列
select_type
表示select的类型,有simple(简单表)、primary(主查询)、union(union中的第二个或者后面的查询语句)、subquery(子查询中的第一个select)
table
表名
type
all表示全表扫描,遍历全表来找到匹配的行;index,索引扫描,遍历整个索引找到匹配的行;range,索引范围扫描,常见的有<、>、between等操作符;ref,非唯一索引扫描或唯一索引的前缀扫描;eq_ref,唯一索引扫描;const/system,单表中最多有一个匹配行,查询起来非常清楚,所以这个匹配行中的其他列可以被优化器在当前查询中当做常量来处理;null,不用访问表或索引,直接能够得到结果
possible
表示查询时可能使用的索引
key
表示实际使用的索引
key_len
使用到索引字段的长度
rows
扫描行的善良
Extra
执行情况的说明和描述,包含不适合在其他列中显示但对执行计划非常重要的额外信息
explain extended 命令可以快速获得一个清晰易读的sql
mysql5.1开始支持分区功能,同时explain增加了对分区的支持。可以通过exolain partitions
命令查看sql所访问的分区。
通过explain分析执行并不能很快定位sql的问题,这个时候需要用到profile做联合分析
Mysql 5.0.37 增加show profiles 和show profile。通过have_profiling参数,能够查看当前mysql是否支持profile
select @@have_profiling
//如果关闭的话
set profiling=1
myIsam有表元数据的缓存,count时不需要消耗太多性能;innodb没有元数据缓存,count执行较慢
例子
show profiles 查看所有执行的sql的语句
show profile for query 需要查看sql的id , 然后就可以查看到sql在执行过程中的线程的每个状态和消耗的时间
trace
Mysql5.6提供了对sql的跟踪trace,通过trace文件
打开trace,设置格式为json,设置trace最大能够使用内存的大小
set optimizer_trace=“enabled=on”,end_markers_in_json=on
set optimizer_trace_max_men_size=1000000
查看命令 select * from information_schema.optimizer_trace
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。