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 获取mysql链接_Java中如何获取mysql连接的3种方法总结

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

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

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

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

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

SVN部署(本地)

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

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,…

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

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

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

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

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

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

如何查看mysql的gtid_汇总丨MySQL GTID技术点,看这一篇就够了!

mysql> SELECT * FROM mysql.gtid_executed;mysql.gtid_executed表是由MySQL服务器提供给内部使用的。它允许副本在副本上禁用二进制日志记录时使用GTIDs,并允许在二进制日志丢失时保留GTID状态。RESET MASTER命令,gtid_executed表将被清除。服务意外…

vb.net详解MDI窗体操作方法

MDI窗体可以避免打开窗体的时候被无数个子窗体困扰,我将为大家一一的介绍一下vb.net中MDI窗体的操作方法 一、如何创建MDI窗体? 1、创建mdi主窗体 新建建立一个默认空白的Windows应用程序,在Form1窗体的属性窗口中找到IsMDIContainer 属性&am…

lokijs可以用mysql_JavaScript实现的内存数据库LokiJS介绍和入门实例_javascript技巧

LokiJS是一个内存数据库,将性能考虑放在第一位。LokiJS支持索引和更快的文档访问,执行性能非常好(近50万OPS/秒)。其内置DynamicView类可以用于数据子集的索引,甚至获取更快的性能。*阅读这篇文章来看一看LokiJS的性能表现。LokiJS支持collec…

python读取word图片_Python中如何读取Word中的图片

Python能够快速的编写、调试,用来提取各类软件中的图片再好不过了。今天小编就为大家带来在Python中提取Word图片的方法。方法需要批量的修改文件后缀名,并且解压之后将图片拷贝到需要存放的地方,然后将该文件夹清空留作下次的路径&#xff0…

PAT 1074. Reversing Linked List (25)

Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6, if K 3, then you must output 3→2→1→6→5→4; if K 4, you must output 4→3→2→1→5→6. Input Sp…

php与mysql连接程序_PHP与Mysql连接

首先请确保LAMP环境完全配置成功,否则请猛击我!然后通过mysql的密码登陆到phpMyAdmin,在浏览器中输入http://127.0.0.1/phpMyAdmin登陆后就像是这样:首先我们来创建一个用于测试的数据库。偷懒的话直接在phpMyAdmin中创建就可以了…

python pandas excel数据处理_Python处理Excel数据-pandas篇

Python处理Excel数据-pandas篇非常适用于大量数据的拼接、清洗、筛选及分析在计算机编程中,pandas是Python编程语言的用于数据操纵和分析的软件库。特别是,它提供操纵数值表格和时间序列的数据结构和运算操作。它的名字衍生自术语“面板数据”(panel dat…

Proe Top-Down设计演示

前段时间有网友问我,proe 里面有没有装配设计中当某一零件尺寸需要修改时, 与其相关的零件尺寸都需要随之做相应改变的法子。我认为top-down是很好的选择。 下面介绍一下top-down的理论: 就按照产品的功能要求先定义产品架构并考虑组件与零件…

python映射实体类_【HIBERNATE框架开发之二】第一个HIBERNATE-ANNONATION项目(采用@ENTITY、@ID直接映射实体类)...

紧接上一篇,这里Himi直接copy上一篇创建的HelloHibernate项目,然后改名为:HelloAnnonation,Ok;OK,准备工作:首先第一步,继续再我们自定义的user libraries 中添加Annotation所需的包&#xff0c…