mysql磁盘临时表清理_mysql 创建大量磁盘临时表

发现 mysql 中创建的临时表基本都是磁盘临时表,对此进行排查。最后为临时表机制说明。

通过查看 mysql 状态变量,看到创建的临时表基本都是磁盘临时表。

bb4341fecde16f39ed5597e765576908.png

查看临时表配置,默认配置 16M,配置并没有问题。

2d8c1f8b109573f478b1f94736aa77ba.png

创建两个表,做一个查询测试create table t1(f1 int auto_increment primary key, f2 char(50), f3 datetime default now());

insert into t1 (f2) values ('赵'),('钱'),('孙'),('李');

create table t2(f1 int auto_increment primary key, f2 int, f3 char(50), f4 datetime default now());

insert into t2 (f2, f3) values ('3', '悟空'),('1', '四'),('4', '白');

刷新状态,进行查询,发现创建的是磁盘表

3b2cd72ae553290afdea283a312d45ef.png

两张小表的查询完全满足创建内存临时表的条件,看来是配置的问题。查看配置文件中有配置 big_tables。

查看官方文档对 big_tables 的说明:

如果设置为1,则所有临时表都存储在磁盘上而不是内存中。 这有点慢,但是对于需要大型临时表的 SELECT 操作,不会报 The table tbl_name is full 的错误。 新连接的默认值为 0(使用内存中的临时表)。 通常,您不需要设置此变量,因为根据需要将内存表自动转换为基于磁盘的表。

修改该系统变量再测试一下,这次创建的临时表就是内存临时表了。

57334e1d25a80f2721d987a84ceaa7f4.png

mysql 中内部临时表(internal temporary table)机制

某些情况下,mysql 在执行语句的时候会创建内部临时表。用户不能直接控制何时发生。

服务器在以下情况会创建临时表:

● 评估 UINON 语句;

● 评估一些视图,例如使用 TEMPTABLE 算法,UNION 或聚合的视图;

● 派生表的评估(FROM子句中的子查询);

● 为子查询或半连接实现创建表;

● 评估包含 ORDER BY 子句和不同 GROUP BY 子句的语句,或 ORDER BY 或 GROUP BY 包含来自除加入队列中第一个表之外的表的列的语句;

● DISTINCT与ORDER BY结合使用可能需要一个临时表;

● 对于使用 SQL_SMALL_RESULT 修饰符的查询,MySQL 使用内存中的临时表,除非查询还包含需要磁盘存储的元素;

● 评估多表 UPDATE 语句;

● 评估 GROUP_CONCAT() 或 COUNT(DISTINCT) 表达式。

想要知道一条语句有没有使用临时表,通过 EXPLAIN 查看 Extra 列有没有说明 Using temporary。EXPLAIN 不一定会对临时表或派生临时表使用临时表。

当服务器创建一个内部临时表的时候(无论是内存表或磁盘表),会增加 Created_tmp_tables 状态变量的值。如果服务器创建一个磁盘临时表(直接建立或者从内存表转换)会增加 Created_tmp_disk_tables 状态变量的值。通过 show global status like 'Create%'; 语句查看。

某些查询条件会阻止使用内存中的临时表,在这种情况下,服务器会使用磁盘上的表:

● 表中存在BLOB或TEXT列;

● 如果使用 UNION 或 UNION ALL,则在 SELECT 列表中存在最大长度大于512(二进制字符串的字节,非二进制字符串的字符)的任何字符串列

● SHOW COLUMNS 和 DESCRIBE 语句使用 BLOB 作为某些列的类型,因此用于结果的临时表是一个磁盘上表。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/359938.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

吃鸡服务器8月10日维护,《黑潮之上》2021年8月10日不停服维护公告

在黑潮之上手游中2021年8月10日更新了哪些有趣的内容呢?想了解本次更新情况如何的小伙伴们,接下来就让我们一起来看一下吧!各位接触者:为了提供良好的游戏体验,保证服务器稳定运行,《黑潮之上》将于2021年8月10日早5:0…

资格赛:题目1:同构

时间限制:2000ms单点时限:1000ms内存限制:256MB描述 给定2个树A和B,保证A的节点个数>B的节点个数。 现在你需要对树A的边进行二染色。 一个好的染色方案,指不存在一个树A中的连通块,同时满足以下2个条件 1. 其中只有同色的边 2. 和B同构。…

如何使用Java 8 FlatMap JDBC ResultSet?

您还不喜欢机能吗? 这样标题可能不会引起您的共鸣-但文章会! 相信我。 本质上,我们想要这样: ------------------ | col1 | col2 | col3 | ------------------ | A | B | C | row 1 | D | E | F | row 2 | G …

java 获取mysql链接_Java中如何获取mysql连接的3种方法总结

前言本文主要来说说三种 Java 中获取 mysql 连接的方式,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:第一种:传统的连接方式;第二种:读取配置文件方式;第三种&…

Netty writeAndFlush() 流程与异步

Netty writeAndFlush()方法分为两步, 先 write 再 flush Overridepublic ChannelFuture writeAndFlush(Object msg, ChannelPromise promise) {DefaultChannelHandlerContext next;next findContextOutbound(MASK_WRITE);ReferenceCountUtil.touch(msg, next);next.invoker.in…

JavaScript学习总结(六)——JavaScript判断数据类型总结

最近做项目中遇到了一些关于javascript数据类型的判断处理,上网找了一下资料,并且亲自验证了各种数据类型的判断,在此做一个总结吧! 一、JS中的数据类型 1.数值型(Number):包括整数、浮点数。 2…

material 项目_Web开发必备的 10 个开源项目,不用自己亲自造轮子!

来自:Java and Python君Web 开发中几乎的平台都需要一个后台管理,但是从零开发一套后台控制面板并不容易,幸运的是有很多开源免费的后台控制面板可以给开发者使用,那么有哪些优秀的开源免费的控制面板呢?我在 Github 上…

香辣弹簧:自动接线的不同方法

我想展示使用Spring的Autowired批注的不同方式: Constructor , Method和Field自动装配。 我展示的示例都是byType自动装配模式的一种形式( constructor自动装配模式类似于byType )。 请参阅Spring Reference指南 ,以获…

SVN部署(本地)

1.安装TortoiseSVN 2.建立Repository。在F:/下建立文件夹SVN_NATIVE_REPOSITORY, —— 》 3.在其他任意路径建立任意名称的路径,这里为D:\MSVC Project\SVN_WORK,确保该文件夹为空 右键单击,点击SVN Checkout, 第一行 …

InetAddressImpl#lookupAllHostAddr慢/挂起

自从我升级到优胜美地以来,我已经注意到尝试解析我的家庭网络上的本地主机已经花费了很多时间(有时超过一分钟),所以我想我会尝试找出原因。 这是我的初始/ etc / hosts文件的外观,它基于我的机器的主机名是teetotal的…

mysql sqlserver schema_MySQL数据库数据迁移到SQLserver

最近因工作需要,需要将mysql数据库迁移到sqlserver,仅仅是数据迁移,因此相对比较简单。对于mysql迁移到sqlserver,我们需要使用到mysql odbc驱动,然后透过sqlserver链接服务器的方式来访问mysql。具体见下文描述。一、…

mysql客户端安装错误_windows下mysql 5.7以上版本安装及遇到的问题

(原)早些前用window安装mysql挺简单的,一个安装程序,一路下一步。2006的5.0版本,确实太早了点。于是官网上又下了一个版本,windows也是提供了二个版本Installer(安装)版和Archive(文档)版。Installer版本的后缀是.msi,…

SP2010开发和VS2010专家食谱--第二章节--工作流

本章内容: 1. 创建顺序工作流。 2. 创建带有初始表单的网站工作流。 3. 从工作流创建任务。 4. 创建自定义任务表单。 Introduction 根据国际工作流联盟(http://www.WFMC.org)标准组织,完全致力于流程,这样定义工作流&…

sklearn中eof报错_sklearn中的数据预处理和特征工程

小伙伴们大家好~o( ̄▽ ̄)ブ,今天我们看一下Sklearn中的数据预处理和特征工程,老规矩还是先强调一下,我的开发环境是Jupyter lab,所用的库和版本大家参考:Python 3.7.1(你的版本至少要…

sql显示前10行数据_SPL 简化 SQL 案例详解:计算各组前 N 行

取出各组的前N行数据是较常见的运算,比如:每个月每种产品销量最高的五天是哪五天,每位员工涨薪最多的一次是哪次,高尔夫会员成绩最差的三次是哪三次,等等。在SQL中,这类运算要用窗口函数以及keep/top/rownu…

jquery 与其他库冲突解决方案

var j jQuery.noConflict();j("div p").hide(); // 基于 jQuery 的代码$("content").style.display "none"; // 基于其他库的 $() 代码转载于:https://www.cnblogs.com/timelesszhuang/p/3677845.html

11. mysql锁机制_深入探讨MySQL锁机制

MySQL锁机制究竟是怎样的呢?这是很多人都提到过的问题,下面就为您详细介绍MySQL锁机制方面的知识,希望可以让您MySQL锁机制有更多的了解。当前MySQL已经支持 ISAM, MyISAM, MEMORY (HEAP) 类型表的表级锁了,BDB 表支持页级锁&…

4月21日会议总结(整理—祁子梁)

会议成果: 1.今天我们确定了软件版本的时间alphe版在12周做出来,在我们内部测试基本通过。 bate版在13周发布和其他组作交换测试,在14周release版发布并给其他人使用体验准备15周的演讲。 2.同时确定了部分功能实现顺序,”谁是卧底…

通达信金融终端_尘缘整合_V7.12

http://pan.baidu.com/s/1gvtPO http://pan.baidu.com/s/1xqrk6 通达信金融终端_尘缘整合_V7.12转载于:https://www.cnblogs.com/mier001/p/3679701.html

5天玩转mysql视频教程_六天带你玩转MySQL

教程列表:01数据库课程介绍02数据库(基础知识)03数据库(关系型数据库)04数据库(关系型数据库关键字说明)05数据库(SQL)06数据库(mysql数据库)07数据库(mysql服务器数据对象)08SQL基本操作(新增数据库)09SQL基本操作(查看数据库)10SQL基本操作(更新数据库)12SQL基本操…