MySQL临时表的使用总结

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

MySQL在很多情况下都会用到临时表,总结一下什么时候会用到临时表:

         什么是临时表:MySQL用于存储一些中间结果集的表,临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。为什么会产生临时表:一般是由于复杂的SQL导致临时表被大量创建

         临时表分为两种,一种是内存临时表,一种是磁盘临时表。内存临时表采用的是memory存储引擎,磁盘临时表采用的是myisam存储引擎(磁盘临时表也可以使用innodb存储引擎,通过internal_tmp_disk_storage_engine参数来控制使用哪种存储引擎,从mysql5.7.6之后默认为innodb存储引擎,之前版本默认为myisam存储引擎)。分别通过Created_tmp_disk_tables 和 Created_tmp_tables 两个参数来查看产生了多少磁盘临时表和所有产生的临时表(内存和磁盘)。

         内存临时表空间的大小由两个参数控制:tmp_table_size 和 max_heap_table_size 。一般来说是通过两个参数中较小的数来控制内存临时表空间的最大值,而对于开始在内存中创建的临时表,后来由于数据太大转移到磁盘上的临时表,只由max_heap_table_size参数控制。针对直接在磁盘上产生的临时表,没有大小控制。

         下列操作会使用到临时表:

1、  union查询

2、  对于视图的操作,比如使用一些TEMPTABLE算法、union或aggregation

3、  子查询

4、  semi-join 包括not in、exist等

5、  查询产生的派生表

6、  复杂的group by 和 order by

7、  Insert select 同一个表,mysql会产生一个临时表缓存select的行

8、  多个表更新

9、  GROUP_CONCAT() 或者 COUNT(DISTINCT) 语句

。。。

Mysql还会阻止内存表空间的使用,直接使用磁盘临时表:

1、  表中含有BLOB或者TEXT列

2、  使用union或者union all时,select子句有大于512字节的列

3、  Show columns或者 desc 表的时候,有LOB或者TEXT

4、  GROUP BY 或者 DISTINCT 子句中包含长度大于512字节的列

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
8月前
|
存储 关系型数据库 MySQL
Mysql的临时表
MySQL中的临时表是一种特殊类型的表,它仅在当前数据库会话中存在,并在会话结束时自动被删除。临时表的作用是存储临时数据,通常用于复杂的查询、数据处理或临时存储计算结果。
78 0
|
4月前
|
前端开发 关系型数据库 MySQL
MYSQL基础知识之【临时表】
MYSQL基础知识之【临时表】
41 0
|
4月前
|
存储 SQL 关系型数据库
认识MySQL数据库中的临时表
认识MySQL数据库中的临时表。
38 5
|
4月前
|
SQL 存储 关系型数据库
认识MySQL数据库中的临时表
认识MySQL数据库中的临时表。
29 4
|
7月前
|
存储 关系型数据库 MySQL
MySQL的临时表以及视图与存储过程、触发器等功能概念详细解释说明以及它们的使用方法举例?
MySQL的临时表以及视图与存储过程、触发器等功能概念详细解释说明以及它们的使用方法举例?
|
10月前
|
存储 关系型数据库 MySQL
MySQL的临时表--永远没有结束的故事
如果您曾经不得不处理与临时表相关的性能和/或磁盘空间问题,我打赌您最终会发现自己很困惑。根据临时表的类型、设置和所使用的MySQL版本,可能会有很多情况。
132 0
|
10月前
|
存储 关系型数据库 MySQL
MySQL的临时表--永远没有结束的故事
如果您曾经不得不处理与临时表相关的性能和/或磁盘空间问题,我打赌您最终会发现自己很困惑。根据临时表的类型、设置和所使用的MySQL版本,可能会有很多情况。
|
SQL 关系型数据库 MySQL
MySql基础-笔记11-临时表、复制表、元数据、序列使用
MySql基础-笔记11-临时表、复制表、元数据、序列使用
129 0
MySql基础-笔记11-临时表、复制表、元数据、序列使用
|
存储 关系型数据库 MySQL
mysql临时表的用法
mysql临时表的用法
83 0
|
SQL 关系型数据库 MySQL
mysql中lock tables与unlock tables(锁表/解锁)使用总结
mysql中lock tables与unlock tables(锁表/解锁)使用总结
280 0