标签:mysql show profile mysql profiling
MySQL数据库最常见的两个瓶颈是CPU和I/O的瓶颈,CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候。磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应用分布在网络上,那么查询量相当大的时候那么平瓶颈就会出现在网络上,我们可以用mpstat, iostat, sar和vmstat来查看系统的性能状态。今天我们不讨论服务器硬件的性能瓶颈,只是谈谈MySQL系统本身,通常需要对数据库进行分析,常见的分析手段有慢查询日志,EXPLAIN 分析查询,profiling分析以及show命令查询系统状态及系统变量,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。
这个是一系列的文章,今天只谈SHOW PROFILE Syntax。通过它我们可以清楚的知道某条Query的性能瓶颈到底在哪里,是消耗的 CPU计算太多,还是需要的的 IO 操作太多?具体的做法如下:
1.开启profiling参数
set profiling=1;
2.执行Query
select * from a;
3.获取系统中保存的所有 Query 的 profile 概要信息
show profiles;
4.针对单个 Query 获取详细的 profile 信息。
show profile all for query 1;
语法如下:
SHOW PROFILE [type [, type] ... ]
[FOR QUERY n]
[LIMIT row_count [OFFSET offset]]
type:
ALL:显示所有的开销信息
| BLOCK IO:显示块IO相关开销
| CONTEXT SWITCHES:上下文切换相关开销
| CPU:显示用户CPU时间、系统CPU时间
| IPC:显示发送和接收相关开销信息
| MEMORY:目前没有实现
| PAGE FAULTS:显示页面错误相关开销信息
| SOURCE:显示和Source_function,Source_file,Source_line相关的开销信息
| SWAPS:显示交换次数相关开销的信息
以上信息也可以通过INFORMATION_SCHEMA.PROFILING表中的信息来查看。
参考资料:
https://dev.mysql.com/doc/refman/5.7/en/show-profile.html
https://dev.mysql.com/doc/refman/5.7/en/profiling-table.html
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:mysql show profile mysql profiling
原文地址:http://blog.csdn.net/chenlvzhou/article/details/46787095