mysql优化分析expalian和show profiles
mysql 对于大家来说都是不陌生的,也和我们的工作息息相关,一个好的程序员,mysql 优化也是其必备的知识之一。
首先,我们先来学习一下查看mysql 命令的执行的频率。show status 命令是我们必须了解的命令。这个命令·用来查看各种sql 执行的频率。
show [session|global] status
session : 表示当前连接会话的执行各种命令的频率
global:自数据库上次启动至今的统计结果。
左边就是执行的语句类型,value 表示执行的次数
常见的几种类型解析:
Com_xxx表示每一个xxx 语句执行的次数
Com_select :表示操作select 语句查询的次数
Com_insert:表示操作insert 语句的次数
Com_commit:表示事务提交情况
Com_rollback:表示事务回滚的情况
connections:表示试图连接Mysql 服务器的次数
Update:服务器工作的时间
Show_queries:慢查询的次数
一下存在几个只针对InnoDB 存储引擎的:
Innodb_rows_read : select 查询返回的行数
Innodn_rows_insert: 执行插入操作插入的行数
Innodb_rows_update :执行更新操作更新的行数
Innodb_rows_deleted:执行deleted 操作删除的行数
1、explain 命令可以查看执行的sql 语句使用的类型
使用explain 命令结果的参数:
mysql> explain select * from servers;
+----+-------------+---------+------+---------------+------+---------+------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+---------+------+---------------+------+---------+------+------+-------+
| 1 | SIMPLE | servers | ALL | NULL | NULL | NULL | NULL | 1 | NULL |
+----+-------------+---------+------+---------------+------+---------+------+------+-------+
1 row in set (0.03 sec)
type:表示的该查询的连接类型,他的类型有:
最为常见的扫描方式有:
system:系统表,少量数据,往往不需要进行磁盘IO;
const:常量连接;
eq_ref:主键索引(primary key)或者非空唯一索引(unique not null)等值扫描;
ref:非主键非唯一索引等值扫描;
range:范围扫描;
index:索引树扫描;
ALL:全表扫描(full table scan);
性能从上到下变一次变差;
system > const>er_ref > ref > range>index > all
2、当时用explain 还没分析出问题,需要使用show profiles 命令继续分许
(1)查看数据库是否支持show profile,mysql 5.0 版本之后就已经支 持了:
mysql> select @@have_profiling;+------------------+| @@have_profiling |+------------------+| YES |+------------------+1 row in set
(2)查看是否开启了profile ,默认是关闭的
mysql> select @@profiling;+-------------+| @@profiling |+-------------+| 0 |+-------------+1 row in set
(3)开启profile :
mysql> set profiling=1;
Query OK, 0 rows affected
(4)使用show profiles 命令查看执行的sql 命令的情况,和查看sql 执行的时间:
mysql> show profiles;
+----------+----------+------------------------+
| Query_ID | Duration | Query |
+----------+----------+------------------------+
| 1 | 0.000294 | select @@profiling |
| 2 | 0.000697 | select * from products |
+----------+----------+------------------------+
(5)如果需要分析query_id=2 的sql 语句:
mysql> show profile for query 2-> ;
+----------------------+----------+
| Status | Duration |
+----------------------+----------+
| starting | 0.000106 |
| checking permissions | 1.3E-5 |
| Opening tables | 8.3E-5 |
| init | 1.2E-5 |
| System lock | 1.7E-5 |
| optimizing | 7E-6 |
| statistics | 3.3E-5 |
| preparing | 1.7E-5 |
| executing | 5E-6 |
| Sending data | 0.000208 |
| end | 9E-6 |
| query end | 1.6E-5 |
| closing tables | 1.3E-5 |
| freeing items | 0.000134 |
| cleaning up | 2.7E-5 |
+----------------------+----------+
15 rows in set
重点查看Sending data ,因为这个状态表示的是线程访问数据到将数据返回到客户端,
然后可以继续分许all、cpu 、block io、context switch 、page fault;
比如查看cpu:
mysql> show profile cpu for query 2
;
+----------------------+----------+----------+------------+
| Status | Duration | CPU_user | CPU_system |
+----------------------+----------+----------+------------+
| starting | 0.000106 | 0 | 0 |
| checking permissions | 1.3E-5 | 0 | 0 |
| Opening tables | 8.3E-5 | 0 | 0 |
| init | 1.2E-5 | 0 | 0 |
| System lock | 1.7E-5 | 0 | 0 |
| optimizing | 7E-6 | 0 | 0 |
| statistics | 3.3E-5 | 0 | 0 |
| preparing | 1.7E-5 | 0 | 0 |
| executing | 5E-6 | 0 | 0 |
| Sending data | 0.000208 | 0 | 0 |
| end | 9E-6 | 0 | 0 |
| query end | 1.6E-5 | 0 | 0 |
| closing tables | 1.3E-5 | 0 | 0 |
| freeing items | 0.000134 | 0 | 0 |
| cleaning up | 2.7E-5 | 0 | 0 |
+----------------------+----------+----------+------------+
15 rows in set
有关es 对象池的
https://dandelioncloud.cn/article/details/1527180781894254593
mysql优化分析expalian和show profiles相关推荐
- Mysql:优化分析(值得深思)
Mysql优化分析 Mysql作为现在的主流关系型数据库,在优化上值得深思啊! 不能只停留在如何使用Mysql,而不去思考如何优化的问题啊. 在谈到Mysql优化方面,Mysql在这方面有专门的文档说 ...
- MySQL性能分析工具的使用:慢查询日志、EXPLAN的使用、分析优化器执行计划:trace、MySQL监控分析视图-sys schema
文章目录 1.数据库服务器的优化步骤 2.查看系统性能参数 2.1 语法 2.2 常用参数 3.统计SQL的查询成本:last_query_cost 4.定位执行慢的SQL:慢查询日志 4.1 慢查询 ...
- MySQL第12天:MySQL索引优化分析之性能优化案例实践
MySQL索引优化分析之性能优化案例实践 执行计划中各select_type含义可以看:MySQL第11天:MySQL索引优化分析之性能分析 https://weibo01.blog.csdn.net ...
- MySQL第11天:MySQL索引优化分析之性能分析
MySQL索引优化分析之性能分析 一.MySQL Query Optimizer 二.MySQL常见瓶颈 三.Explain(执行计划) 1.什么是执行计划? 2.执行计划能干什么? ...
- MySQL第10天:MySQL索引优化分析之索引介绍
MySQL索引优化分析之索引简介 1.索引是什么? 2.索引优势.劣势 3.索引分类.基本语法 4.索引结构 5.哪些情况需要创建索引? 6.哪些情况不需要创建索引? ---------------- ...
- MySQL第9天:MySQL索引优化分析之join查询
MySQL索引优化分析之join查询 #编写时间:2017.3.12 #编写地点:广州 常见join查询: 1.SQL执行顺序:手写.机读.总结 (1)手写 (2)机读 (3)总结 2.join图 3 ...
- MySQL第8天:MySQL索引优化分析之SQL慢
MySQL索引优化分析之SQL慢 #编写时间:2017.3.11 #编写地点:广州 性能下降SQL慢,执行时间长,等待时间长的原因有: (1)查询语句写的不合理 (2)索引失效:单值索引.符合索引 ( ...
- mysql如何建立索引workbench_如何对MySQL索引进行优化分析
为什么你写的sql查询慢?为什么你建的索引常失效?通过本章内容,你将学会MySQL性能下降的原因,索引的简介,索引创建的原则,explain命令的使用,以及explain输出字段的意义.助你了解索引, ...
- MySQL索引分析和优化(转)
MySQL索引分析和优化(转) 索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存.如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记 录,直至找到符 ...
最新文章
- strstr函数头文件_C语言(函数)学习之strstr strcasestr
- [学习笔记]最小圆覆盖
- python 远程控制win10界面切换_Python3如何实现Win10桌面自动切换
- 域名抢注之乱象:投资的暴利,管理的漏洞
- IIS报错,App_global.asax.×××.dll拒绝访问
- 【bzoj5064】B-number 数位dp
- jwt令牌_JWT令牌的秘密轮换
- local variable 'xxx' referenced before assignment
- 诗与远方:无题(二十五)
- Go 的新关键字 any 是个啥
- python函数多次调用内存溢出_关于循环多次(具体160次左右)获取同一个句柄对象,不同实例,内存溢出的问题。...
- SqlServer中 SET DATEFIRST
- 使用cmd命令进行运行java(cmd命令输出Hello word)
- Facebook采取赤裸裸抄袭的战略 争夺用户
- 金融计算机求log,cfa计算器怎么算对数
- win10系统启动wifi服务器,windows10系统下开启wifi共享的两种方法
- 关于Java的二十篇技术热文
- learn-motrix and 百度网盘
- “熊孩子”乱敲键盘就攻破了Linux桌面,大神:17年前我就警告过你们
- 腾讯云HTTPDNS 将上线微信服务平台!