[3-01-02].第15节:调优工具 - 查看 SQL 执行成本
MySQL高级学习大纲
一、Show Profile的功能:
- 1.
Show Profile
是 MySQL 提供的可以用来分析当前会话中 SQL 都做了什么、执行的资源消耗情况的工具,可用于 SQL 调优的测量
- 2.默认情况下处于关闭状态,并保存最近 15 次的运行结果
二、Show Profile使用:
2.1.配置开启:
- 1.我们可以在会话级别开启这个功能:
2.2.测试配置:
a.执行查询语句:
- 1.执行相关的查询语句,产生慢查询:
b.查看profiles:
- 2.接着看下当前会话都有哪些 profiles,使用下面这条命令,能看到当前会话一共有 2 个查询。
c.查看最近一次profile:
- 1.如果我们想要查看最近一次查询的开销,可以使用:
show profile;
- 2.想要查看具体某一行:show profile cpu,block io for query 2,可以看到执行过程比较慢,那么此时就可以使用explain来分析为什么执行过程这么慢,是不是因为缺少索引,字段设置的不合适,链接的表是不是太多等原因
2.3.show profile常用的查询参数的含义:
- ALL:显示所有的开销信息
- BLOCK IO: 显示块 IO 开销
- CONTEXT SWITCHES :上下文切换开销
- CPU:显示 CPU 开销信息
- IPC:显示发送和接收开销信息
- MEMORY: 显示内存开销信息
- PAGE FAULTS:显示页面错误开销信息
- SOURCE:显示和 Source_function,Source_file, Source_line 相关的开销信息
- SWAPS:显示交换次数开销信息
2.4.日常开发需要注意的结论:
- 1.
converting HEAP to MyISAM
查询结果太大,内存不够,数据往磁盘上搬了 - 2.
Creating tmp table
创建临时表。先拷贝数据到临时表,用完后再删除临时表 - 3.
Copying to tmp table on disk
把内存中临时表复制到磁盘上,需要警惕! - 4.
locked
:加锁
如果在
show profile 诊断结果中出现了以上 4 条结果中的任何一条,则 SQL 语句需要优化
注意:不过 SHOW PROFILE 命令将被弃用,我们可以
从 information_schema 中的 profiling 数据表进行查看