mysql优化(一)

一、show status

1.当前session中所有统计参数的值

show status like 'Com_%'

2.如果 'Com_xxxx’可以查具体的数值

show status like 'Com_insert'

show status like 'Com_select'

show status like 'Com_update'

show status like 'Com_delete'

3.了解数据库基本情况
show status like 'Connections'  //试图连接mysql服务器的次数
show status like 'Uptime'  //服务器工作的时间
show STATUS like 'Slow_queries'  //慢查询次数

二、explan

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值