本文目录
最近在做MySQL的全表扫描、慢查询、文本索引优化,需要抓取到线上执行的sql进行判断,由于项目代码过多,直接从代码排查难度有点大,于是借助了MySQL命令
查看哪些线程正在运行(只能抓取正在运行的语句)
show processlist;
SHOW PROCESSLIST显示哪些线程正在运行,如果您有SUPER权限,您可以看到所有线程,否则,您只能看到您自己的线程(也就是,与您正在使用的MySQL账户相关的线程),如果您不使用FULL关键词,则只显示每个查询的前100个字符,如果查询的相关条件超过100条,可以使用show full processlist;来查看全部;
查看执行时间
1 show profiles;
2 show variables;查看profiling 是否是on状态;
3 如果是off,则 set profiling = 1;
4 执行自己的sql语句;
5 show profiles;就可以查到sql语句的执行时间;
explain 解析SQL语句
可结合美团的SQLAdvisor做索引优化,优化文本索引(file sort),group by、order by用到的索引。
Refer:
http://blog.51cto.com/12217917/2062941
https://blog.csdn.net/weixin_37288522/article/details/79710909
发表评论
欢迎评论