如果英文不好的话,可以参考 searchdoc 翻译的中文版本
http://www.searchdoc.cn/rdbms/mysql/dev.mysql.com/doc/refman/5.7/en/index.com.coder114.cn.html
要弄清楚这个问题,需要知道MySQL处理SQL请求的过程, 我们来看下
对于一个读写很频发的的系统,使用查询缓存很可能会降低查询处理的效率,建议不是用查询缓存,可以将query_cache_type 设置为OFF,query_cache_size 设置为0
接着上一步说,查询缓存未启用,或者 未命中查询缓存 , 服务器进行SQL解析、预处理,再由优化器生成对应的执行计划 。 MySQL会依赖这个执行计划和存储引擎进行交互 .
包括以下过程
当然了还有 查询CPU等信息 的命令
比如 show profile cpu for query 1
演示
查询CPU的使用情况
看到有一个 1 warning ,看看是啥
‘SHOW PROFILE’ is deprecated and will be removed in a future release. Please use Performance Schema instead , 很明白了,看看官方推荐的 Performance Schema 吧
5.5引入的 . performance_schema在5.7.x及其以上版本中默认启用(5.6.x及其以下版本默认关闭),如果要显式启用或关闭时,我们需要使用参数performance_schema=ON|OFF设置
performance_schema可以记录数据库所有线程执行过的SQL, 而上面的profile是session级别的,仅能记录当前session 的。
查看耗时的SQL