sql性能分析
sql 执行频率
通过 show [ session | global] status 命令可以提供服务器状态信息,可以查看蛋清全数据的insert、update、delete、select 访问频率
session 表示当前会话,global表示全局
com后跟7个下划线
show global status like 'com_______
慢查询日志
慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:毫秒,默认10秒)的所有有sql语句的日志
mysql慢查询日志默认关闭,需要在mysql的配置文件中配置 /etc/my.cnf
#开启慢查询日志
slow_query_log = 1
#设置慢查询时间,超过2秒视为慢查询
long_query_time = 2
慢查询日志位置:/var/lib/mysql/localhost-slow.log
show variables like 'slow_query_log'
profile 详情
默认关闭
查看数据库是否支持 profile
select @@have_profiling
查看是否开启
select @@profiling
开启profile
set profiling = 1
查看所有sql执行耗时
show profiles
根据query_id查询指定sql耗时详情
show profile for query query_id
sql语句cpu使用情况
show profile for query query_id
explain 执行计划
desc select from mall_user 或 explain select from mall_user
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wfgT7rix-1650205150491)(img/explain.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IxJN1OZB-1650205150493)(img/explain2.png)]
字段含义:
select 查询的序列号,标识查询中执行select子句或者操作表的顺序(id相同,执行属性从上到下,id不同,值越大,越先执行)
表示select类型,常见类型 simple(简单表,不使用表链接或者子查询),primary(主查询,即外层的表),union,subquery
连接类型: 性能由好到差 null, system, const,eq_ref,ref, range,index,all
主键或者唯一性索引查询时 type为 const
可能用到的索引,一个或多个
实际用的索引
索引长度,该索引字段的长度
执行查询的行数,不准确
返回结果的行数占需读取行数的百分比,filtered的值越大越好
额外信息
|