SQL执行过程中的性能负载点
一、SQL执行过程
1、用户连接数据库,执行SQL语句;
2、先在内存进行内存读,找到了所需数据就直接交给用户工作空间;
3、内存读失败,也就说在内存中没找到支持SQL所需数据,就进行物理读,也就是到磁盘中查找;
4、找到的数据放到内存中,在内存进行数据过滤再放到会话工作空间。
5、假设会话工作空间需要暂存结果集进行排序,但空间不足的话,就会借用磁盘tmpdir,最后再将结果返回给用户。

注:
用户会话空间是内存中分配出来的一个工作空间,而innodb_buffer_pool是innodb存储引擎在内存中的一个缓冲池。
一个SQL执行速度快并不能说明这个SQL没有性能问题,SQL性能不是一定需要利用并发来测试,主要是看其资源消耗点。
二、影响SQL执行几个资源消耗点(最底层理论依据):
1、用户连接线程建立
2、物理读,I/O慢
3、内存读,消耗CPU
4、磁盘排序
5、数据传输,网络消耗
三、判断一个SQL的性能执行优劣
根据SQL执行的资源消耗点来进行判断。
1、如何判断是否出现连接建立
mysql> show global status like 'Threads_created';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| Threads_created | 5 |
+-----------------+-------+
1 row in set (0.00 sec)
2、如何判断是否出现物理读
mysql> show global status like 'Innodb%read%';
+---------------------------------------+----------+
| Variable_name | Value |
+---------------------------------------+----------+
| Innodb_buffer_pool_read_ahead_rnd | 0 |
| Innodb_buffer_pool_read_ahead | 2303 |
| Innodb_buffer_pool_read_ahead_evicted | 0 |
| Innodb_buffer_pool_read_requests | 137140 |
| Innodb_buffer_pool_reads | 662 |
| Innodb_data_pending_reads | 0 |
| Innodb_data_read | 49271296 |
| Innodb_data_reads | 3130 |
| Innodb_pages_read | 2964 |
| Innodb_rows_read | 369 |
+---------------------------------------+----------+
10 rows in set (0.01 sec)
关注点:
1、Innodb_buffer_pool_reads:innodb物理读的次数
2、Innodb_data_reads:物理读IO请求次数
3、Innodb_pages_read:物理读page的总数
3、如何判断是否出现过量内存读(比值)
mysql> show global status like 'Innodb_rows_read';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| Innodb_rows_read | 369 |
+------------------+-------+
1 row in set (0.00 sec)
Innodb_rows_read:实际上的内存读的数量,也就是实际上需要访问的数据量(返回的数据量)
4、如何判断是否出现磁盘排序
mysql> show global status like 'sort_merge_passes';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Sort_merge_passes | 0 |
+-------------------+-------+
1 row in set (0.00 sec)
sort_merge_passes:必须要做归并排序的次数
5、如何查看网络传输量
mysql> show global status like '%bytes%';
+--------------------------------+----------+
| Variable_name | Value |
+--------------------------------+----------+
| Bytes_received | 8943228 |
| Bytes_sent | 10775680 |
| Innodb_buffer_pool_bytes_data | 49741824 |
| Innodb_buffer_pool_bytes_dirty | 0 |
+--------------------------------+----------+
4 rows in set (0.01 sec)
四、关于磁盘排序
客户端一个用户连接到服务器MySQL数据库,系统为该用户启动一个用户会话,数据库开启一个用户连接线程,并根据配置参数在内存中为该用户分配用户工作空间。如果读取的数据结果集要进行排序处理,而用户工作空间不够用的话,就会向磁盘借用空间,磁盘排序。
mysql> show variables like 'tmpdir';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| tmpdir | /tmp |
+---------------+-------+
1 row in set (0.01 sec)
SQL执行过程中的性能负载点的更多相关文章
- 精尽MyBatis源码分析 - MyBatis 的 SQL 执行过程(一)之 Executor
该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...
- 精尽MyBatis源码分析 - SQL执行过程(二)之 StatementHandler
该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...
- 精尽MyBatis源码分析 - SQL执行过程(三)之 ResultSetHandler
该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...
- 精尽MyBatis源码分析 - SQL执行过程(四)之延迟加载
该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...
- SQL SERVER 2008:内部查询处理器错误: 查询处理器在执行过程中遇到意外错误
今天一个同事突然告诉我,以前跑得很正常的一个SQL语句,执行时突然报如下错误: 消息1222,级别16,状态18,第1 行 已超过了锁请求超时时段. ...
- mysql中SQL执行过程详解与用于预处理语句的SQL语法
mysql中SQL执行过程详解 客户端发送一条查询给服务器: 服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果.否则进入下一阶段. 服务器段进行SQL解析.预处理,在优化器生成对应的 ...
- 转:Oracle中SQL语句执行过程中
Oracle中SQL语句执行过程中,Oracle内部解析原理如下: 1.当一用户第一次提交一个SQL表达式时,Oracle会将这SQL进行Hard parse,这过程有点像程序编译,检查语法.表名.字 ...
- SQL监控:mysql及mssql数据库SQL执行过程监控审计
转载 Seay_法师 最近生活有很大的一个变动,所以博客也搁置了很长一段时间没写,好像写博客已经成了习惯,搁置一段时间就有那么点危机感,心里总觉得不自在.所以从今天起还是要继续拾起墨笔(键盘),继续好 ...
- Deepin下phpunit安装,以及执行过程中所遇到的问题
Deepin下phpunit安装,以及执行过程中所遇到的问题 安装phpunit步骤 wget https://phar.phpunit.de/phpunit.phar chmod +x phpuni ...
随机推荐
- Node.js入门第一天
一.Node.js简介 1.1 简介 V8引擎本身就是用于Chrome浏览器的JS解释部分,但是Ryan Dahl这哥们,鬼才般的,把这个V8搬到了服务器上,用于做服务器的软件. Node.js是一个 ...
- 第 2 章 MySQL 架构组成
麻雀虽小,五脏俱全.MySQL 虽然以简单著称,但其内部结构并不简单.本章从MySQL物理组成.逻辑组成,以及相关工具几个角度来介绍 MySQL 的整体架构组成,希望能够让读者对 MySQL 有一个更 ...
- 【源码解析】BlockManager详解
1 Block管理模块的组件和功能 BlockManager:BlockManager源码解析 Driver和Executor都会创建 Block的put.get和remove等操作的实际执行者 Bl ...
- 什么样的PPT能助你成为一个优秀的演讲者——程序员的演讲之道
欢迎访问我的个人博客,原文链接:http://wensibo.top/2017/05/28/speaker/ ,未经允许不得转载! 前言 今天是端午节假期的第一天,在这里祝大家假期快乐,不过像我这种渣 ...
- 建造者模式—设计角度重温DNF中的角色
应用场景 假设现在我们要设计DNF中的人物角色(鬼剑士.神枪手.魔法师.圣骑士.格斗家).然而,利用面对对象的思想,必须先从实体入手,每一个角色都包含各种装备.武器.配饰,这些就当做要建造的零件,然后 ...
- JqueryEasyUI-从入门到精通-第一天
PS:本教程暂时不提供源码,自己动手写写会记得更牢固哦 Parser(解析器) 对象的属性和方法: 使用: 效果:
- HTML5资源教程
新款CSS3按钮组合 5组可爱CSS3按钮 Leave a reply 之前我分享过一些时尚的CSS3动画按钮,比如CSS3渲染Checkbox实现3D开关切换按钮.纯CSS3 3D按钮 按钮酷似牛奶 ...
- 【初码干货】记一次分布式B站爬虫任务系统的完整设计和实施
[初码文章推荐] 程序员的自我修养 Azure系列文章 阿里云系列文章 爬虫系列文章 [初码产品推荐] AlphaMS开发模式 闪送达城市中央厨房 今天带来一个有意思的东西-分布式B站爬虫任务系统 这 ...
- java基础(十一章)
一.理解什么是类和对象 万事万物皆对象 1.属性--对象具有的特征(特点) 2.方法--对象可执行的操作(能干什么事) 3.对象的定义: 是一个客观存在的,看的见或摸得着的 ...
- Web前端性能优化全攻略
网页制作poluoluo文章简介:Web 前端性能优化是个大话题,是个值得运维人员持续跟踪的话题,是被很多网站无情忽视的技术. Web 前端性能优化是个大话题,是个值得运维人员持续跟踪的话题,是被很多 ...