mysql 性能分析之 profiling
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相关推荐
- MySQL性能分析 一
一.数据库服务器优化步骤 下面流程展示了优化的步骤,可以理解为三个步骤:慢查询.EXPLAIN和SHOW PROFILING. 二.查看系统性能参数 在MySQL中,可以使用SHOW STATUS语句 ...
- 死磕数据库系列(三十三):MySQL 性能分析与相关工具的使用
点关注公众号,回复"1024"获取2TB学习资源! 今天我将详细的为大家介绍 MySQL 性能分析以及相关工具使用的相关知识,希望大家能够从中收获多多!如有帮助,请点在看.转发支持 ...
- MySQL性能分析及explain的使用
MySQL性能分析及explain用法的知识是本文我们主要要介绍的内容,接下来就让我们通过一些实际的例子来介绍这一过程,希望能够对您有所帮助. 1.使用explain语句去查看分析结果 如explai ...
- MySQL 性能分析 之 联合索引(复合索引)实践分析
MySQL 性能分析 之 联合索引(复合索引)实践分析 作为开发者,大家都知道,一个服务器.一个数据库的性能是项目的重中之重,后台架构.写法与数据库设计的好坏往往直接影响到整个项目的性能. 索引:是当 ...
- mysql 性能分析_十大MySQL性能分析工具汇总!专治MySQL性能瓶颈
前言 MySQL 数据库最常见的两个瓶颈是CPU和I/O的瓶颈.CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候,磁盘I/O瓶颈发生在装入数据远大于内存容量的时候. MySQL数据库性能 ...
- 011 MySQL性能分析
一.性能分析的思路 1.首先需要使用[慢查询日志]功能,去获取所有查询时间比较长的SQL语句: 2.其次[查看执行计划]查看有问题的SQL的执行计划 explain: 3.最后可以使用[show pr ...
- MySQL性能分析工具的使用:慢查询日志、EXPLAN的使用、分析优化器执行计划:trace、MySQL监控分析视图-sys schema
文章目录 1.数据库服务器的优化步骤 2.查看系统性能参数 2.1 语法 2.2 常用参数 3.统计SQL的查询成本:last_query_cost 4.定位执行慢的SQL:慢查询日志 4.1 慢查询 ...
- mysql性能分析工具profiling_Mysql系列(十)—— 性能分析工具profiling
explain是从mysql怎样解析执行sql的角度分析sql优劣.profiling是从sql执行时资源使用情况的角度来分析sql. 分析SQL执行带来的开销是优化SQL的重要手段.在MySQL数据 ...
- mysql 性能分析 命令_MySQL中使用SHOW PROFILE命令分析性能的用法整理
show profile是由Jeremy Cole捐献给MySQL社区版本的.默认的是关闭的,但是会话级别可以开启这个功能.开启它可以让MySQL收集在执行语句的时候所使用的资源.为了统计报表,把pr ...
最新文章
- Jerry眼中的SAP客户数据模型
- python写扫雷脚本_Python自动扫雷实现方法
- Android混淆模板与使用
- CentOS 7下搭建配置 SVN 服务器
- toj 4606 Homework Checker
- qt 里面使用webengine
- 日常问题解决记录一:远程桌面进程如果关闭了怎么呼出?
- jetty;linux 目录结构
- python基础知识 ~ 异常处理与导入
- CAD 2022卸载方法,如何完全彻底卸载删除清理干净CAD各种残留注册表和文件? 【转载】
- 计算机无法连接到桌面,Win7系统桌面天气小工具提示解决方案无法连接到服务...
- 尔雅 科学通史(吴国盛) 个人笔记及课后习题 2018 第四章 中国独立发展的科技文明
- 我的一百个2019(四):2019,我被坑惨了
- ArcGis Engine 符号
- 鸿蒙芯片是华为公司靠几年造出来的,难度不输芯片制造,华为高管实话实说,造出操作系统只是开始...
- The Performance of µ-Kernel-Based Systems
- 2019年新能源汽车补贴政策,赶紧了解车牌识别!
- GTD时间管理阅读笔记
- 非遗传承人陶一的诗词被荣获吉尼斯记录的《上海滩诗叶》收录
- Pandas 1.数据的读取和保存