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是目前使用最为广泛的关系型数据库之一,如果使用得当,可支撑企业级高并发.高可靠服务,使用不当甚至连并发量略高的个人网站都难以支撑: 就算使用了缓存,大量的数据库访问依旧在所难免,即使设 ...
随机推荐
- 微信小程序slot(二)
在组件的 wxml 中可以包含 slot 节点,用于承载组件使用者提供的 wxml 结构. 默认情况下,一个组件的 wxml 中只能有一个 slot .需要使用多 slot 时,可以在组件 js 中声 ...
- 份额大涨! 天翼云稳居中国公有云laaS市场、laaS+PaaS市场第三!
近日,国际数据公司(IDC)最新发布的<公有云市场数据跟踪,2023Q3>报告显示,在公有云整体市场增速全面收紧的背景下,中国电信天翼云市场份额大涨,中国公有云IaaS市场份额增长至12. ...
- 设置npm、yarn和pnpm的国内镜像地址和yarn命令相关问题
1.npm 全局设置: 输入如下命令查看镜像地址: npm config get registry 输入如下命令设置镜像地址为淘宝: // 推荐地址 npm config set registry h ...
- RocketMQ实战—6.生产优化及运维方案
大纲 1.RocketMQ集群如何进行权限机制的控制 2.如何对RocketMQ集群进行消息堆积的追踪 3.如何处理RocketMQ的百万消息积压问题 4.针对RocketMQ集群崩溃的金融级高可用方 ...
- changeIP.sh一键切换本机ip脚本
changeIP.sh vi changeIP.sh chmod +x changeIP.sh #!/bin/bash export IFCFG=/etc/sysconfig/network-scri ...
- linux mint安装Scala
Scala由java编写,需要前期安装jdk 面向函数式编程 1.下载 Scala 二进制包2.11.8 http://www.scala-lang.org/downloads 解压到/usr/loc ...
- flutter-真机调试ios Traceback (most recent call last)
1 Traceback (most recent call last): 2 File "/tmp/C5FDB25B-C7F4-462E-8AC9-7FF9D1A50F21/fruitstr ...
- Deepseek学习随笔(2)--- 快速上手DeepSeek
注册与登录 要开始使用 DeepSeek,你需要先注册一个账号.以下是具体步骤: 访问 DeepSeek 官网. 使用邮箱或手机号注册账号. 登录后进入控制台,开始使用. 控制台功能介绍 DeepSe ...
- Docker Hub 无法访问,替代镜像
我使用以下配置成功拉取了mysql 8.0.33 和redis lastest,但是不知道究竟是哪一个起作用了 linux 执行 sudo vim /etc/docker/daemon.json 填入 ...
- rgba颜色转换为十六进制
RGBA颜色转HEX 转换步骤: 先将r.g.b分别转换为十六进制,比如 r.g.b分别为 255,则转换后得到的为 FF.FF.FF 将a 乘以 255,然后获得的积的整数部分转换为十六进制,如 a ...