mysql show profiles 使用分析sql 性能

show variables like '%profiling%'; 查看状态

set profiling = 1; 开启

reset query cache; 清空缓存

select * from admin;

show profiles;

show profile for query 2;

show profile CPU for query 2;

show profile cpu,block io,memory,swaps for query 2;

show profile cpu,CONTEXT SWITCHES,PAGE FAULTS for query 2;

sending data花费的时间较长,意思是它在为select语句准备数据

“Sending data”状态的含义,原来这个状态的名称很具有误导性,所谓的“Sending data”并不是单纯的发送数据,而是包括“收集 + 发送 数据”。

这里的关键是为什么要收集数据,原因在于:mysql使用“索引”完成查询结束后,mysql得到了一堆的行id,如果有的列并不在索引中,mysql需要重新到“数据行”上将需要返回的数据读取出来返回个客户端