1、首先查看此功能有没有开启,默认是OFF关闭状态

mysql> show variables like 'profiling%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| profiling     | OFF   |
+---------------+-------+
1 row in set (0.00 sec)

2、开启profiling

mysql> set profiling=1; #关闭profiling
mysql> set profiling=0; 

3、列出最近执行的SQL情况,默认15条

mysql> show profiles;
+----------+------------+----------------------------------+
| Query_ID | Duration   | Query                            |
+----------+------------+----------------------------------+
|        1 | 0.00058575 | show variables like 'profiling%' |
+----------+------------+----------------------------------+
1 row in set, 1 warning (0.01 sec)

4、查看某一条SQL的执行情况(query 1 是3查到的SQL ID)

语法格式:   show profile [类型1,类型2] for query [ID]

类型:      ALL:显示所有的开销信息
                 BLOCK IO:显示块IO相关开销
                 CONTEXT SWITCHES:上下文切换相关开销
                 CPU:显示CPU相关开销
                 IPC:显示发送和接受相关开销
                 MEMORY:显示内存相关开销
                 PAGE FAULTS:显示页面错误相关开销
                 SOURCE:显示和Source_function, Source_file,Source_line相关的相关开销
                 SWAPS:显示交换次数相关开销

mysql> show profile cpu,block io for query 1;
+----------------------+----------+----------+------------+--------------+---------------+
| Status               | Duration | CPU_user | CPU_system | Block_ops_in | Block_ops_out |
+----------------------+----------+----------+------------+--------------+---------------+
| starting             | 0.000102 | 0.000140 |   0.000015 |            0 |             0 |
| checking permissions | 0.000017 | 0.000029 |   0.000000 |            0 |             0 |
| Opening tables       | 0.000044 | 0.000091 |   0.000000 |            0 |             0 |
| init                 | 0.000017 | 0.000032 |   0.000000 |            0 |             0 |
| System lock          | 0.000014 | 0.000028 |   0.000000 |            0 |             0 |
| optimizing           | 0.000012 | 0.000022 |   0.000000 |            0 |             0 |
| statistics           | 0.000014 | 0.000012 |   0.000016 |            0 |             0 |
| preparing            | 0.000013 | 0.000025 |   0.000000 |            0 |             0 |
| executing            | 0.000227 | 0.000439 |   0.000015 |            0 |             0 |
| Sending data         | 0.000020 | 0.000028 |   0.000015 |            0 |             0 |
| end                  | 0.000014 | 0.000026 |   0.000000 |            0 |             0 |
| query end            | 0.000013 | 0.000022 |   0.000000 |            0 |             0 |
| closing tables       | 0.000010 | 0.000020 |   0.000000 |            0 |             0 |
| removing tmp table   | 0.000013 | 0.000026 |   0.000000 |            0 |             0 |
| closing tables       | 0.000011 | 0.000021 |   0.000000 |            0 |             0 |
| freeing items        | 0.000024 | 0.000048 |   0.000000 |            0 |             0 |
| cleaning up          | 0.000024 | 0.000047 |   0.000000 |            0 |             0 |
+----------------------+----------+----------+------------+--------------+---------------+
17 rows in set, 1 warning (0.00 sec)

参数的分析

        在show profile 的时候有一个字段叫status,几个重要的参数如下:

状态 描述
System lock 确认是由于哪个锁引起的,通常是因为MySQL或InnoDB内核级
的锁引起的建议:如果耗时较大再关注即可,一般情况下都还好
Sending data 从server端发送数据到客户端,也有可能是接收存储引擎层返回的数据
再发送给客户端,数据量很大时尤其经常能看见,
备注:Sending Data不是网络发送,是从硬盘读取,发送到网络是
Writing to net。建议:通过索引或加上LIMIT,减少需要扫描并且发送
给客户端的数据量
Sorting result 正在对结果进行排序,类似Creating sort index,不过是正常表,
而不是在内存表中进行排序建议:创建适当的索引
Table lock 表级锁,没什么好说的,要么是因为MyISAM引擎表级锁,
要么是其他情况显式锁表
create sort index 当前的SELECT中需要用到临时表在进行ORDER BY排序。
建议:创建适当的索引
checking query cache for
querychecking privileges on
cachedsending cached result to
clienstoring result in query cache
和query cache相关的状态,已经多次强烈建议关闭

除了上述几个字段,如果Status出现了如下几个字段,说明SQL性能问题很严重。

  • converting HEAP to MyISAM :查询结果太大,内存不够用,往磁盘上存储了。
  • Creating tmp table:创建临时表,首先拷贝原有数据到临时表,用完后再删除临时表,在数据量很大的情况下,异常的耗性能。
  • Copying to tmp table on disk:把内存中的临时表复制到磁盘,也相当的耗费性能。
  • locked:锁表了。

mysql 性能分析之 profiling相关推荐

  1. MySQL性能分析 一

    一.数据库服务器优化步骤 下面流程展示了优化的步骤,可以理解为三个步骤:慢查询.EXPLAIN和SHOW PROFILING. 二.查看系统性能参数 在MySQL中,可以使用SHOW STATUS语句 ...

  2. 死磕数据库系列(三十三):MySQL 性能分析与相关工具的使用

    点关注公众号,回复"1024"获取2TB学习资源! 今天我将详细的为大家介绍 MySQL 性能分析以及相关工具使用的相关知识,希望大家能够从中收获多多!如有帮助,请点在看.转发支持 ...

  3. MySQL性能分析及explain的使用

    MySQL性能分析及explain用法的知识是本文我们主要要介绍的内容,接下来就让我们通过一些实际的例子来介绍这一过程,希望能够对您有所帮助. 1.使用explain语句去查看分析结果 如explai ...

  4. MySQL 性能分析 之 联合索引(复合索引)实践分析

    MySQL 性能分析 之 联合索引(复合索引)实践分析 作为开发者,大家都知道,一个服务器.一个数据库的性能是项目的重中之重,后台架构.写法与数据库设计的好坏往往直接影响到整个项目的性能. 索引:是当 ...

  5. mysql 性能分析_十大MySQL性能分析工具汇总!专治MySQL性能瓶颈

    前言 MySQL 数据库最常见的两个瓶颈是CPU和I/O的瓶颈.CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候,磁盘I/O瓶颈发生在装入数据远大于内存容量的时候. MySQL数据库性能 ...

  6. 011 MySQL性能分析

    一.性能分析的思路 1.首先需要使用[慢查询日志]功能,去获取所有查询时间比较长的SQL语句: 2.其次[查看执行计划]查看有问题的SQL的执行计划 explain: 3.最后可以使用[show pr ...

  7. MySQL性能分析工具的使用:慢查询日志、EXPLAN的使用、分析优化器执行计划:trace、MySQL监控分析视图-sys schema

    文章目录 1.数据库服务器的优化步骤 2.查看系统性能参数 2.1 语法 2.2 常用参数 3.统计SQL的查询成本:last_query_cost 4.定位执行慢的SQL:慢查询日志 4.1 慢查询 ...

  8. mysql性能分析工具profiling_Mysql系列(十)—— 性能分析工具profiling

    explain是从mysql怎样解析执行sql的角度分析sql优劣.profiling是从sql执行时资源使用情况的角度来分析sql. 分析SQL执行带来的开销是优化SQL的重要手段.在MySQL数据 ...

  9. mysql 性能分析 命令_MySQL中使用SHOW PROFILE命令分析性能的用法整理

    show profile是由Jeremy Cole捐献给MySQL社区版本的.默认的是关闭的,但是会话级别可以开启这个功能.开启它可以让MySQL收集在执行语句的时候所使用的资源.为了统计报表,把pr ...

最新文章

  1. Jerry眼中的SAP客户数据模型
  2. python写扫雷脚本_Python自动扫雷实现方法
  3. Android混淆模板与使用
  4. CentOS 7下搭建配置 SVN 服务器
  5. toj 4606 Homework Checker
  6. qt 里面使用webengine
  7. 日常问题解决记录一:远程桌面进程如果关闭了怎么呼出?
  8. jetty;linux 目录结构
  9. python基础知识 ~ 异常处理与导入
  10. CAD 2022卸载方法,如何完全彻底卸载删除清理干净CAD各种残留注册表和文件? 【转载】
  11. 计算机无法连接到桌面,Win7系统桌面天气小工具提示解决方案无法连接到服务...
  12. 尔雅 科学通史(吴国盛) 个人笔记及课后习题 2018 第四章 中国独立发展的科技文明
  13. 我的一百个2019(四):2019,我被坑惨了
  14. ArcGis Engine 符号
  15. 鸿蒙芯片是华为公司靠几年造出来的,难度不输芯片制造,华为高管实话实说,造出操作系统只是开始...
  16. The Performance of µ-Kernel-Based Systems
  17. 2019年新能源汽车补贴政策,赶紧了解车牌识别!
  18. GTD时间管理阅读笔记
  19. 非遗传承人陶一的诗词被荣获吉尼斯记录的《上海滩诗叶》收录
  20. Pandas 1.数据的读取和保存

热门文章

  1. 功能机和Andorid 语言支持
  2. 第三章 基础数据和技术指标 | 保证金计算
  3. Android Studio里配置GenyMotion
  4. 有必要练习一下口才和演讲的技巧
  5. 2021年中国工业软件行业发展现状及未来发展趋势分析:工业软件进入快速发展期[图]
  6. 打印的增值税电子专用发票没有加盖发票专用章能不能入账?
  7. PHP支付宝APP支付接口
  8. 本地搭建gitlab环境,配置邮件通知和基本操作
  9. Flutter自定义圆形选择框
  10. stegsolve图片隐写解析器的使用