MySQL之profiling性能优化
如果需要优化一条SQL,想了解一条sql的每个阶段的耗时分布,则可以使用profiling来进行分析,能很方便的定位在哪个阶段、什么资源引起的性能问题。
一、开启profiling参数
此参数默认是关闭状态,线上不建议打开,建议在会话级别的设置排查问题
# 查看参数的状态
mysql> show variables like "%profi%";
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| have_profiling | YES |
| profiling | OFF | #未开启
| profiling_history_size | 15 | #保存的条数
+------------------------+-------+
3 rows in set (0.12 sec) # 开启参数
mysql> set profiling=1;
Query OK, 0 rows affected, 1 warning (0.04 sec) # 将history设置大一点
mysql> set profiling_history_size=100;
Query OK, 0 rows affected, 1 warning (0.00 sec) #再次查看,已经打开
mysql> show variables like "%profi%";
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| have_profiling | YES |
| profiling | ON | # 打开状态
| profiling_history_size | 100 |
+------------------------+-------+
3 rows in set (0.01 sec)
二、执行语句进行分析
下一步则是执行一条具体的语句,以便分析使用
# 执行一条insert语句,分析耗时
mysql> insert into t1 values (3, 'kk');
Query OK, 1 row affected (0.02 sec) # 查看profiles的信息
mysql> show profiles;
+----------+------------+---------------------------------+
| Query_ID | Duration | Query |
+----------+------------+---------------------------------+
| 1 | 0.00332000 | set profiling_history_size=100 |
| 2 | 0.00814400 | show variables like "%profi%" |
| 3 | 0.02193000 | insert into t1 values (3, 'kk') |
+----------+------------+---------------------------------+
3 rows in set, 1 warning (0.00 sec)
三、查看SQL语句耗时详细信息
查看具体sql的执行过程的每个阶段的耗时情况
# 此处的query 3则为上面查出来的Query_ID,此处的时间单位是秒
mysql> show profile for query 3;
+----------------------+----------+
| Status | Duration |
+----------------------+----------+
| starting | 0.003476 |
| checking permissions | 0.000021 |
| Opening tables | 0.000024 |
| init | 0.000498 |
| System lock | 0.000015 |
| update | 0.013241 |
| end | 0.000301 |
| query end | 0.003210 |
| closing tables | 0.000023 |
| freeing items | 0.000032 |
| cleaning up | 0.001089 |
+----------------------+----------+
11 rows in set, 1 warning (0.01 sec) # 使用这条sql的执行 cpu、io、内存、交换内存等信息
show profile cpu,block io,memory,swaps,context switches,source for query 3;

MySQL之profiling性能优化的更多相关文章
- MySQL 基础及性能优化工具
数据库,用户及权限 常用用户管理操作 # 创建本地用户 abc create user abc@localhost # 创建内网能够访问的用户 abc create user abc@'192.168 ...
- MySQL之profiling性能分析(在5.6.14版本被丢弃)
官方建议使用information_schema.profiling. 原因是show profile 输出了查询执行的每个步骤及其花费的时间,但是结果很难快速确定哪个步骤花费的时间最多,因为输出是按 ...
- mysql配置以及性能优化(转)
MySQL配置文件my.cnf中文详解,附mysql性能优化方法分享 ================================================================= ...
- 利用 gperftools 对nginx mysql 内存管理 性能优化
利用 gperftools 对nginx 与 mysql 进行 内存管理 性能优化 降低负载. Gperftools 是由谷歌开发.官方对gperftools 的介绍为: These tools ...
- MySQL系列:性能优化
1. 优化简介 MySQL性能优化包括:查询优化.数据库结构优化.MySQL服务器优化等. 2. 查询优化 2.1 分析查询语句 MySQL提供EXPLAIN和DESCRIBE,用来分析查询语句. E ...
- 2018/09/17《涂抹MySQL》【性能优化及诊断】学习笔记(七)
读 第十三章<MySQL的性能优化与诊断> 总结 一说性能优化,整个人都像被打了鸡血一样
- MySQL抓包工具:MySQL Sniffer 和性能优化
简介 MySQL Sniffer 是一个基于 MySQL 协议的抓包工具,实时抓取 MySQLServer 端的请求,并格式化输出.输出内容包访问括时间.访问用户.来源 IP.访问 Database. ...
- MySql学习—— 查询性能优化 深入理解MySql如何执行查询
本篇深入了解查询优化和服务器的内部机制,了解MySql如何执行特定查询,从中也可以知道如何更改查询执行计划,当我们深入理解MySql如何真正地执行查询,明白高效和低效的真正含义,在实际应用中就能扬长避 ...
- MySQL之查询性能优化(二)
查询执行的基础 当希望MySQL能够以更高的性能运行查询时,最好的办法就是弄清楚MySQL是如何优化和执行查询的.MySQL执行一个查询的过程,根据图1-1,我们可以看到当向MySQL发送一个请求时, ...
- MySQL设计规范与性能优化
引言 MySQL是目前使用最为广泛的关系型数据库之一,如果使用得当,可支撑企业级高并发.高可靠服务,使用不当甚至连并发量略高的个人网站都难以支撑: 就算使用了缓存,大量的数据库访问依旧在所难免,即使设 ...
随机推荐
- oracle11gRAC升级到19C
升级oracle11g集群到19.3 前述环境检查: [root@qhdb1 ~]# crsctl status res -t ------------------------------------ ...
- 从找朋友到找变位词:一道趣味字符串问题的深入解析|LeetCode 438 找到字符串中所有字母异位词
LeetCode 438 找到字符串中所有字母异位词 点此看全部题解 LeetCode必刷100题:一份来自面试官的算法地图(题解持续更新中) 生活中的算法 还记得小时候玩的"找朋友&quo ...
- Jenkins插件:Generic Webhook Trigger
Jenkins插件:Generic Webhook Trigger 作为一名软件测试工程师,在日常工作中,我经常需要使用Jenkins来进行持续集成和持续部署(CI/CD).而Jenkins的众多插件 ...
- spring-boot配置slf4j日志
SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统.按照官方的说法,SLF4J 是一个用于日志系统的简单 ...
- QT5笔记: 32. QPainter 基本绘制
- 洛谷P3755 [CQOI2017] 老C的任务 题解
前言:这个分块和刚被撤下的不同,因为这个分块时间复杂度正确,能通过所有 hack. 题目传送门. 有没有什么可以不用离线都能解决问题的简单算法?答案是分块!! 60pts 首先遇到这个题目,先写一个比 ...
- day2-变量与数据类型
变量 概念:程序的基本组成单位 定义: 指定变量类型 根据值自行判断变量类型(类型推导) 省略var,定义赋值 var i int var i = 10 i, j := 20, 10 数据基本类型 基 ...
- redux vs redux-toolkit 及源码实现
我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:霜序 前言 为何讲这个内容?以为后续大家会使用 redux ...
- 一个简单的PHP单文件路由类示例
<?php class Router { protected $routes = array(); protected $basePath; public function __construc ...
- FastAPI依赖注入:参数共享与逻辑复用
扫描二维码关注或者微信搜一搜:编程智域 前端至全栈交流与成长 第一章:依赖注入核心原理 1.1 依赖树构建机制 from fastapi import Depends def auth_service ...