mysql 内部 临时表_MySQL内部临时表何时使用磁盘
问题:
在 实验 05中,我们看到了内部临时表会使用到不少内存。
那么如果需要的临时表再大一些,必然要使用到磁盘来承载,那么内部临时表是何时使用磁盘的?
实验:
我们仍使用 实验 05中的环境,略去准备数据的过程。
我们仍然使用两个会话,一个会话 run,用于运行主 SQL;另一个会话 ps,用于进行 performance_schema 的观察:
主会话线程号为 29,
将 performance_schema 中的统计量重置,
临时表的表大小限制取决于参数 tmp_table_size 和 max_heap_table_size 中较小者,我们实验中以设置 max_heap_table_size 为例。
我们将会话级别的临时表大小设置为 2M(小于上次实验中临时表使用的空间),执行使用临时表的 SQL:
查看内存的分配记录:
会发现内存分配略大于 2M,我们猜测临时表会比配置略多一点消耗,可以忽略。
查看语句的特征值:
可以看到语句使用了一次需要落磁盘的临时表。
那么这张临时表用了多少的磁盘呢?
我们开启 performance_schema 中 waits 相关的统计项:
重做实验,略过。
再查看 performance_schema 的统计值:
可以看到几个现象:
1. 临时表空间被写入了 7.92MiB 的数据。
2. 这些数据是语句写入后,慢慢逐渐写入的。
来看看这些写入操作的特征,该方法我们在 实验 03使用过:
可以看到写入的线程是 page_clean_thread,是一个刷脏操作,这样就能理解数据为什么是慢慢写入的。
也可以看到每个 IO 操作的大小是 16K,也就是刷数据页的操作。
结论:
我们可以看到,
1. MySQL 会基本遵守 max_heap_table_size 的设定,在内存不够用时,直接将表转到磁盘上存储。
2. 由于引擎不同(内存中表引擎为 heap,磁盘中表引擎则跟随 internal_tmp_disk_storage_engine 的配置),本次实验写磁盘的数据量和实验 05中使用内存的数据量不同。
3. 如果临时表要使用磁盘,表引擎配置为 InnoDB,那么即使临时表在一个时间很短的 SQL 中使用,且使用后即释放,释放后也会刷脏页到磁盘中,消耗部分 IO。
mysql 内部 临时表_MySQL内部临时表何时使用磁盘相关推荐
- mysql 内部 临时表_MySQL内部临时表策略 - Mr.南柯 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
1H#dGTog4r5J6H0通过对源码的跟踪和调试,以及参考MySQL官方文档,对MySQL内部临时表使用策略进行整理,以便于更加深入的理解.#D4s,PXr9k_2S051Testing软件测试网 ...
- mysql 查询 插入 临时表_mysql创建临时表,将查询结果插入已有表中
今天遇到一个很棘手的问题,想临时存起来一部分数据,然后再读取.我记得学数据库理论课老师说可以创建临时表,不知道mysql有没有这样的功能呢?临时表在内存之中,读取速度应该比视图快一些.然后还需要将查询 ...
- mysql 中有没有临时表_MySQL 中的两种临时表
来源:阿里云RDS - 数据库内核组 链接:http://mysql.taobao.org/monthly/2016/06/07/ 外部临时表 通过CREATE TEMPORARY TABLE 创建的 ...
- mysql临时表_MySQL中的两种临时表
目录: MySQL 临时表在我们需要保存一些临时数据时是非常有用的.临时表只在当前连接可见,当关闭连接时,MySQL会自动删除表并释放所有空间. 使用其他MySQL客户端程序连接MySQL数据库服务器 ...
- mysql 临时索引_MySQL select in 语句未使用索引,产生磁盘临时表,导致 crash
1. 问题描述 业务执行一个非常简单的 SQL,结果导致 MySQL crash,并且每次都能复现. MySQL 版本: Percona Server for MySQL 5.7.20 SQL 语句: ...
- mysql临时表的使用实例_MySQL中临时表的使用示例
这两天事情稍微有点多,公众号也停止更新了几天,结果有读者催更了,也是,说明还是有人关注,利己及人,挺好. 今天分享的内容是MySQL中的临时表,对于临时表,之前我其实没有过多的研究,只是知道MySQL ...
- MySQL存储过程:利用游标+临时表实现查询
MySQL存储过程使用游标.临时表实现动态SQL查询 2020.3.24 用能第二周周二上午,任务需求:编写存储过程查询监测设备状态以及目标监测设备状态.(任务完成) 改存储过程包含了大量相关知识,特 ...
- mysql表变量临时表_sql server 临时表详细讲解及简单示例
一.概述 在sql server里临时表存储在TempDB库中,TempDB是一个系统数据库,它只有Simple恢复模式,也是最小日志记录操作.主要用于存放局部临时表,全局临时表,表变量,都是基于临时 ...
- mysql 临时表 概念_临时表的概念
union all只是合并查询结果,并不会进行去重和排序操作,在没有去重的前提下,使用union all的执容行效率要比union高 一.临时表的概念 在我们操作的表数据量庞大而且又要关联其他表进行查 ...
最新文章
- html如何让tr自动换行,js和css如何让table自动换行但是不是超出td?
- java.lang.exception_java.lang.RuntimeException和java.lang.Exception
- 基于java多线程来实现生产者和消费者的实例
- Android开发--Service开启,关闭,绑定,解除
- ELK学习9_ELK数据流传输过程_问题总结2
- mysql 导出数据为csv格式
- java获取mysql执行计划_好程序员Java学习路线之MySQL的执行计划
- 【hadoop】hadoop 安装 kerberos
- J2EEd 13个规范
- C++中sizeof和strlen
- (转)C#读写共享文件
- Retrofit2从入门到放弃
- VS2017使用Qt教程
- win10底部任务栏无响应解决办法
- 大话西游2服务器修改,大话西游2:9.17维护解读:五倍次数修改全服上线,灵兽村要变样啦...
- git 不abandon的办法
- java swing choice_Java-GUI基础(三)java.swing
- 软件测试周刊(第67期):用一颗浏览的心,去看待人生,一切的得与失、隐与显,都是风景与风情。
- “2022零信任神兽方阵”启动调研,欢迎各单位填报信息
- 软件测试基础学习 - Linux文件及文件内容查找命令总结