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是目前使用最为广泛的关系型数据库之一,如果使用得当,可支撑企业级高并发.高可靠服务,使用不当甚至连并发量略高的个人网站都难以支撑: 就算使用了缓存,大量的数据库访问依旧在所难免,即使设 ...
随机推荐
- java中的集合ArrayList
创建集合对象有3种形式 1,不需要传递构造参数,直接new就可以,此时底层数组为空数组. 2,构造参数需要传递一个int类型的值, 用于设置底层数组的长度 3,构造参数需要传递一个Collection ...
- 部署Palworld幻兽帕鲁服务器最佳实践(Ubuntu)
本文为您介绍Ubuntu系统部署Palworld幻兽帕鲁服务器的最/佳实践. 1.登录云主机控制台,选择创建云主机的资源池,点击"创建云主机"按钮. 2.基础配置. CPU架构选择 ...
- Flink同步mysql到iceberg
一.如何做一致性保障 1.全量数据分片读取,增量数据单并发读取,保证增量阶段不会乱序2.全量阶段写入失败会清空表后重新写入,避免重复数据.3.全量阶段多task并行读取,把每个task开始结束时间提交 ...
- IDEA中创建Spring Boot项目(SSM框架)
一.IDEA创建新Maven项目 创建maven项目完成 因为创建多模块项目,删除根目录src目录 二.maven多模块项目配置 需要创建的模块 umetric-web 控制层 umetric-we ...
- MAC消息认证码介绍
此MAC是密码学概念,与计算机网络不同 为什么有了摘要算法还要有MAC 摘要算法保障的是消息的完整性 归根到底就是由H(x)来保证x的完整 那么问题来了,如果我知道你所使用的摘要算法(例如中间人攻击) ...
- ASP.NET Core 6 基础入门系列(1) ASP.NET Core 6.0 简介
系列目录 [已更新最新开发文章,点击查看详细] 预备知识1: C#5.C#6.C#7.C#8.C#9.C#10 预备知识2: .NET 对比 .NET Framework 预备知识3: ...
- 【Spring Boot】我的第一个Spring Boot练习
背景 Spring 在 Java 生态的企业级开发项目中极其常用,通常我们为项目引入一项新技术时,不得不考虑如何将新技术与 Spring 整合在一起. 我们知道,预研一项新技术,我们基于 MVP(最简 ...
- Qt 枚举类型 值、字符串、枚举类型互转
枚举类型 class Enum : public QObject{ Q_OBJECT public: enum Fruit{ APPLE = 0, BANANA, POTATO } Q_ENUM(Fr ...
- redis - [05] Java & Redis
题记部分 一.准备工作 下载jedis.jar或者在maven配置文件中配置jar包依赖 二.连接redis import redis.clients.jedis.Jedis; public clas ...
- Hive - [06] 行转列,列转行
行转列(多行转一行) 1.创建表,并插入示例数据. create table students_info( `SNO` string comment '学生编号', `name` string com ...