mysql5.6使用profile工具分析sql
mysql性能这块,其实都是DBA做的事情,一问DBA的朋友就会很快拿出一大堆工具就让你来使用,并且帮助你排查出很多问题。并不是每个公司都有DBA的,很多公司都是开发来弄的,如果业务量特别大并且上来的时候,我们可以招聘一个DBA,一般运维都会帮助来弄。
profile使用工具;
查看自己版本的是否开启了Profile, profiling=on是开启了这个profile功能,
mysql> select version();
+------------+
| version() |
+------------+
| 5.6.35-log |
+------------+
1 row in set (0.00 sec)mysql> show variables like '%profil%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| have_profiling | YES |
| profiling | ON |
| profiling_history_size | 15 |
+------------------------+-------+
3 rows in set (0.01 sec)
Help profile 查看一下,profile的帮助,但是看一下,官方在这个时候会让你注意一下,profile会在5.7以后会废弃了,不用了,所以先查看一下自己的版本,估计好多公司都没用到5.7,还是老的版本。
mysql> help profile;
Name: 'SHOW PROFILE'
Description:
Syntax:
SHOW PROFILE [type [, type] ... ][FOR QUERY n][LIMIT row_count [OFFSET offset]]type: ALL --显示所有的开销信息 | BLOCK IO --显示块IO相关开销 | CONTEXT SWITCHES --上下文切换相关开销 | CPU --显示CPU相关开销信息 | IPC --显示发送和接收相关开销信息 | MEMORY --显示内存相关开销信息 | PAGE FAULTS --显示页面错误相关开销信息 | SOURCE --显示和Source_function,Source_file,Source_line相关的开销信息 | SWAPS --显示交换次数相关开销的信息The SHOW PROFILE and SHOW PROFILES statements display profiling
information that indicates resource usage for statements executed
during the course of the current session.*Note*: These statements are deprecated as of MySQL 5.6.7 and will be
removed in a future MySQL release. Use the Performance Schema instead;
see
http://dev.mysql.com/doc/refman/5.6/en/performance-schema-query-profili
ng.html.Profiling is controlled by the profiling session variable, which has a
开启一下profiling功能;mysql> set profile=1;
ERROR 1193 (HY000): Unknown system variable 'profile'
mysql> set profiling=1;
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> show variables like '%profil%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| have_profiling | YES |
| profiling | ON |
| profiling_history_size | 15 |
+------------------------+-------+
3 rows in set (0.00 sec)
输入sql语句查看一下,profiles是否产生了。
mysql> SELECT count(*) from table where publishtime >='2017-01-01' and publishtime <='2017-08-30'-> ;
+----------+
| count(*) |
+----------+
| 1317564 |
+----------+
1 row in set (2.46 sec)mysql> show profiles;
+----------+------------+--------------------------------------------------------------------------------------------------------+
| Query_ID | Duration | Query |
+----------+------------+--------------------------------------------------------------------------------------------------------+
| 1 | 0.00109175 | show variables like '%profil%' |
| 2 | 2.46288425 | SELECT count(*) from table where publishtime >='2017-01-01' and publishtime <='2017-08-30' |
+----------+------------+--------------------------------------------------------------------------------------------------------+
2 rows in set, 1 warning (0.00 sec)mysql>获取指定的开销:
mysql> show profile for query 2;
+----------------------+----------+
| Status | Duration |
+----------------------+----------+
| starting | 0.000147 |
| checking permissions | 0.000023 |
| Opening tables | 0.000047 |
| init | 0.000081 |
| System lock | 0.000031 |
| optimizing | 0.000034 |
| statistics | 0.001650 |
| preparing | 0.000046 |
| executing | 0.000018 |
| Sending data | 2.460588 |
| end | 0.000041 |
| query end | 0.000019 |
| closing tables | 0.000022 |
| freeing items | 0.000055 |
| cleaning up | 0.000085 |
+----------------------+----------+
15 rows in set, 1 warning (0.00 sec)可以看到Sending data ,这个还是比较耗时,这个是sending data 不是发送数据的意思,
是收集和发送集合的数据。查看cpu的数据:
mysql> show profile cpu for query 2;
+----------------------+----------+----------+------------+
| Status | Duration | CPU_user | CPU_system |
+----------------------+----------+----------+------------+
| starting | 0.000147 | 0.000000 | 0.000000 |
| checking permissions | 0.000023 | 0.000000 | 0.000000 |
| Opening tables | 0.000047 | 0.000000 | 0.000000 |
| init | 0.000081 | 0.000000 | 0.000000 |
| System lock | 0.000031 | 0.000000 | 0.000000 |
| optimizing | 0.000034 | 0.000000 | 0.000000 |
| statistics | 0.001650 | 0.001000 | 0.001000 |
| preparing | 0.000046 | 0.000000 | 0.000000 |
| executing | 0.000018 | 0.000000 | 0.000000 |
| Sending data | 2.460588 | 2.464625 | 0.025996 |
| end | 0.000041 | 0.000000 | 0.000000 |
| query end | 0.000019 | 0.000000 | 0.000000 |
| closing tables | 0.000022 | 0.000000 | 0.000000 |
| freeing items | 0.000055 | 0.000000 | 0.000000 |
| cleaning up | 0.000085 | 0.000000 | 0.000000 |
+----------------------+----------+----------+------------+
15 rows in set, 1 warning (0.00 sec)也是这个操作,type: ALL --显示所有的开销信息 | BLOCK IO --显示块IO相关开销 | CONTEXT SWITCHES --上下文切换相关开销 | CPU --显示CPU相关开销信息 | IPC --显示发送和接收相关开销信息 | MEMORY --显示内存相关开销信息 | PAGE FAULTS --显示页面错误相关开销信息 | SOURCE --显示和Source_function,Source_file,Source_line相关的开销信息 | SWAPS --显示交换次数相关开销的信息这里边的可以任意特换就可以看到对应的参数的开销,自己试试看。
转载于:https://blog.51cto.com/shangdc/1961085
mysql5.6使用profile工具分析sql相关推荐
- show profile 分析SQL
show profile分析SQL
- mysql分析sql语句基础工具 —— explain
转载自 https://segmentfault.com/a/1190000009724144 立即登录 [笔记] mysql分析sql语句基础工具 -- explain mysql wateran ...
- mysql for 语句执行顺序_MySQL使用profile分析SQL语句执行过程
分析SQL执行带来的开销是优化SQL的重要手段.在MySQL数据库中,可以通过配置profiling参数来启用SQL剖析.该参数可以在全局和session级别来设置.对于全局级别则作用于整个MySQL ...
- Eclipse插件TPTP-程序Profile与分析工具详细教程
TPTP简介 Eclipse Test & Performance Tools Platform 是Eclipse的一个顶级工程(Top-Level Project),TPTP项目封装了一大堆 ...
- 发现了一款很好用的分析SQL脚本数据流关系的工具SQLFlow
最近因做一个分析SQL语句中的数据和table/column关系的需求,因为SQL语法太过复杂分析过程会很艰难,所以搜寻这种分析SQL数据流的工具,发现了很好用的分析SQL脚本数据流关系的工具SQLF ...
- 【建议收藏】15755字,讲透MySQL性能优化(包含MySQL架构、存储引擎、调优工具、SQL、索引、建议等等)
0. 目录 1)MySQL总体架构介绍 2)MySQL存储引擎调优 3)常用慢查询分析工具 4)如何定位不合理的SQL 5)SQL优化的一些建议 1 MySQL总体架构介绍 1.1 MySQL总体架构 ...
- 【建议收藏】15755 字,讲透 MySQL 性能优化(包含 MySQL 架构、存储引擎、调优工具、SQL、索引、建议等等)
0. 目录 1)MySQL 总体架构介绍 2)MySQL 存储引擎调优 3)常用慢查询分析工具 4)如何定位不合理的 SQL 5)SQL 优化的一些建议 1 MySQL 总体架构介绍 1.1 MySQ ...
- 两个sql交集_如何使用性能分析工具定位SQL执行慢的原因?
在前面的文章中就讲过了查询优化器,知道在查询优化器中会经历逻辑查询优化和物理查询优化.需要注意的是,查询优化器只能在已经确定的情况下(SQL 语句.索引设计.缓冲池大小.查询优化器参数等)决定最优的查 ...
- mysql 查询慢 分析_MySQL优化:定位慢查询的两种方法以及使用explain分析SQL
一条SQL查询语句在经过MySQL查询优化器处理后会生成一个所谓的执行计划,这个执行计划展示了具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等等. 本章的内容就 ...
最新文章
- 观点:AI 与自动化是矛盾的
- delphi 实现屏幕旋转代码_X86指令混淆之函数分析和代码块粉碎
- 分类VS标签,一文带你看懂数据中台为什么要建标签体系?
- Maven私服搭建(Nexus Repository Manager 3)
- 【python网络编程】创建TCP/UDP服务器进行客户端/服务器间通信
- [BUUCTF-pwn]——bbys_tu_2016
- IOS开发之UI基础LOL英雄展示-15
- 危险!!!也许你的web网站或服务正在悄无声息地被SQL注入
- opengl微开发之1-从零開始
- 信息学奥赛一本通(1266:【例9.10】机器分配)
- 经验之谈:内存问题造成数据库性能异常怎么破?
- sf | 读取和保存空间矢量数据
- css 清空ios端_H5移动端开发常见的问题处理
- atitit.编程语言 类与对象的 扩展机制.doc
- TCP/IP协议分层模型以及数据的封装和分用
- 2021年总结:缘起性空,归来不少年——回顾这荆棘的一年
- Unity-TA 成长之路(二)内置渲染管线-官方篇
- cont在c语言用法,在S7-1500中指令TSEND_C and TRCV_C如何使用?
- 金蝶EAS开发笔记(理论篇)
- 【前端三分钟】利用Javascript实现打字效果
热门文章
- Linux上压缩目录以及目录下的所有文件
- 前端实现数字快速递增_艾默生新型超声波发生器的数字控制功能可实现快速设置和准确操作...
- 幸运大抽奖 | 神策 2020 数据驱动用户大会等你来
- 只因这个模型,它 1 年增长 44%,收入达 2.15 亿美元
- 北京 | 一场产品经理必听的实战交流会!
- 神策 FM:Airbnb 如何通过用户体验预测用户复购?
- 吴恩达的 AI 战略强调了什么?
- Ajax(form表单文件上传、请求头之contentType、Ajax传递json数据、Ajax文件上传)
- mysql数据库的安装
- 初涉.....编码__列表__字典