MySQL内存表和临时表的区别

在MySQL中有三种虚拟表:临时表、内存表、视图。

一、内存表

  • 表结构在磁盘,数据和索引保存在内存里面,MySQL服务重启数据丢失,但表结构依旧存。
  • 断开连接结构和数据依然存在
  • 参数控制:max_heap_table_size
  • 到达上限后报错
  • 不能包含TEXT,BLOB等字段
  • 内存表默认存储引擎是MEMORY
1.1 创建内存表,需要将 ENGINE 设置为 MEMORY
CREATE TABLE [IF NOT EXISTS]  内存表名
(...
) ENGINE = MEMORY;
1.2 删除内存表
DROP TABLE IF EXISTS tmp_table;
1.3 使用内存表的注意事项

(1)当MySQL服务重启之后,内存表的数据会丢失,表结构依旧存。
(2)多个session,创建表的名字不能一样。
(3)一个session创建会话后,对其他session也是可见的。
(4)data目录下只有tmp_memory.frm,表结构放在磁盘上,数据放在内存中。
(5)可以创建索引,删除索引,支持唯一索引。
(6)不影响主备,主库上插入的数据,备库也可以查到。
(7)show tables 语句可以查看得到表,show create table可以查看内存表。
(8)内存表不能包含BLOB或者TEXT列。
(9)内存表支持AUTO_INCREMENT列。

二、临时表

  • 表结构和数据都在内存,并且只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。
  • 参数控制:tmp_table_size
  • 到达上限后创建文件在磁盘上
  • 可以包含TEXT, BLOB等字段。
  • 临时表默认的存储引擎是MyISAM
2.1 创建临时表
# 1.直接创建
CREATE TEMPORARY TABLE [IF NOT EXISTS] 临时表名
(...
);
# 2.通过复制创建临时表
CREATE TEMPORARY TABLE temp_table
AS SELECT * FROM t2;
2.2 删除临时表

1.自动删除:默认情况下,当断开与数据库的连接后,临时表就会自动被销毁
2.手动删除:DROP TABLE IF EXISTS temp_table;

2.3 使用临时表的注意事项
  1. 临时表只在当前连接可见,当这个连接关闭的时候,会自动drop。两个不同的连接可以使用相同名字的临时表,两个表之间不存在什么关系,如果临时表的名字和已经存在的磁盘表名字一样,那么临时表会暂时覆盖磁盘表。就是说,你select 查询,只会显示临时表里面的,不会显示磁盘表。
  2. 临时表的存储引擎:memor,myisam,merge,innodb,临时表不支持mysql cluster簇。
  3. 同一个查询语句,只能用一次临时表,就是说不能将表和自己做连接等。
  4. 重命名表,不能用rename 可以用alter table代替。
  5. 如果超出了临时表的容量,临时表会转换成磁盘表。
  6. show tables语句不会列出临时表,在information_schema中也不存在临时表信息,show create table可以查看临时表。

三.内存表和临时表的区别

临时表内存表
存储表结构和数据都存储在内存中表结构存储在磁盘中,表数据存储在内存中
会话单个会话独享的,是会话级别的可以多个会话共享
引擎临时表默认,myisam内存表默认,memory
断开连接表结构和表数据都没了表结构和表数据都存在
服务重启表结构和表数据都没了表结构存在,表数据不存在
性能由于表数据都是存放在内存中,所以相对来说,查询速度较快,但是数据的维护较为困难

参考:https://blog.csdn.net/pan_junbiao/article/details/86409064

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

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

相关文章

【PHP】通过PHP安装数据库并使数据初始化

一、前言 有些CMS在部署的时候不用使用数据库工具,而是通过数据库安装页面就能完成数据库创建和数据填充,所以自己就想动手做一个这样的功能,这样在给别人安装系统的时候就不用再那么麻烦了,直接一键安装解决了。 二、效果图 输…

基于骨骼的动作识别的行动结构图卷积网络

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 摘要Abstract文献阅读:基于骨骼的动作识别的行动结构图卷积网络1、研究背景2、方法提出3、关键结构3.1、A-links inference module (AIM)3.2、Structura…

【测试开发学习历程】MySQL分组查询与子查询 + MySQL表的联结操作

目录 1 MySQL分组查询与子查询 1.1 数据分组查询 1.2 过滤分组 1.3 分组结果排序 1.4 select语句中子句的执行顺序 1.5 子查询 2 MySQL表的联结操作 2.1 关系表 2.2 表联结 2.3 笛卡尔积 2.4 内部联结 2.5 外联结 2.6 自联结 2.7 组合查询 1 MySQL分组查询与子查询…

day16-环形链表

问题描述: 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环&#xff0…

更改默认的网络状态页面

目录 网络状态码 概念 分类 详解 页面更改 场景 步骤 网络状态码 概念 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头用以响应浏览器的请求…

仿牛客社区项目所有PPT图片

文章目录 第1章 初识Spring Boot,开发社区首页1.1 课程介绍1.1.1 课程目标1.1.2 技术架构1.1.3 开发环境 1.2 搭建开发环境1.2.1 Apache Maven1.2.2 Intellij IDEA1.2.3 Spring Initializer1.2.4 SpringBoot 入门示例 1.3 Spring入门1.3.1 SpringBoot 全家桶1.3.2 S…

SpringBoot 邮件服务集成配置全面解析

前言 本文以网易邮箱(及 163 邮箱)为例,展示如何为 SpringBoot 项目集成邮件服务,其他邮箱配置类似,可以自行查看 Spring Email 指南 或是其他官方文档 授权码 首先我们需要获取授权码,用于后续配置&…

Xpath解析

目录 Xpath的简介: 简介: 相关概念: Xpath的使用: 安装: 用法: 第一步:准备html 第二步:将html构造出etree对象 第三步:使用etree对象的xpath()方法配合xpath表达…

JAVA——volatile,wait,notife

文章目录 volatile关键字简识jvm内存模型内存上的优化问题的产生volatile的作用 wait()wait()的作用 notify()notify的唤醒顺序 volatile关键字 volatile关键字可以保证内存的可见性,什么是内存的可见性呢&#xff1f…

二叉树的链式结构和遍历(下)

又见面了,小伙伴们。今天我们继续来学习二叉树,今天的内容相对来说比较容易理解,前提是需要你们自己动手画图才会好理解。眼过千遍不如手过一遍。所以小伙伴们要多动手哦。直接开始今天的学习吧 1.二叉树链式结构的实现 1.1 前置说明 在学习…

探秘MySQL InnoDB引擎:数据存储原理与高级实践

引言: MySQL作为业界广泛使用的开源关系型数据库,其中的InnoDB存储引擎以其事务处理能力和行级锁定机制深受青睐。本文将深入剖析InnoDB的数据存储原理,并揭示其使用过程中的注意事项与高级操作技巧。 一、InnoDB数据存储原理 页存储结构&a…

代码随想录刷题day32|买卖股票的最佳时机II跳跃游戏跳跃游戏II

文章目录 day32学习内容一、买卖股票的最佳时机II1.1、思路1.2、代码-正确写法1.2.1、如何理解result Math.max(prices[i] - prices[i - 1], 0)算法逻辑 二、跳跃游戏2.1、思路2.2、正确写法12.2.1、 如何理解上面这段代码逻辑详解 2.2.2、为什么要i nums[i]?解释…

亚马逊认证考试系列 - 知识点 - 什么是VPC

VPC指的是虚拟私有云(Virtual Private Cloud),它是在公共云环境中创建一个逻辑隔离的虚拟网络环境。VPC可以让您在云中划分一个私有区域并且在这个区域内运行您的资源,比如虚拟机实例、数据库实例等。VPC可以帮助您实现网络安全性…

如何成为顶尖程序员?

如何成为顶尖程序员? 程序员是一种特殊的职业,但为什么大多数程序员无法达到顶尖水平?本文探讨了几个可能的原因,包括缺乏热情和动力、基础和原理的不足、实践和经验的匮乏,以及思考和创新的欠缺。了解这些原因可以帮助…

基于SpringBoot+MyBatis+Vue的电商智慧仓储管理系统的设计与实现(源码+LW+部署+讲解)

前言 博主简介👨🏼‍⚕️:国内某一线互联网公司全栈工程师👨🏼‍💻,业余自媒体创作者💻,CSDN博客专家🏆,Java领域优质创作者📕&#x…

Redis中文乱码问题

最近排查问题,发现之前的开发将日志写在redis缓存中(不建议这样做),我在查看日志的时候发现没办法阅读,详细是这样的: 查阅资料后发现是进制问题,解决方法是启动客户端的时候将redis-cli改为red…

【go从入门到精通】if else 条件控制

作者简介: 高科,先后在 IBM PlatformComputing从事网格计算,淘米网,网易从事游戏服务器开发,拥有丰富的C,go等语言开发经验,mysql,mongo,redis等数据库,设计模…

python笔记基础--文件和存储数据(7)

目录 1.从文件中读取数据 2.写入文件 3.存储数据 3.1使用json.dump()和json.load() 3.2保存和读取用户生成的数据 3.3重构 1.从文件中读取数据 读取整个文件 with open(data.txt) as file_object: contents file_object.read()print(contents)print(contents.rstrip…

电脑安装双系统windows和ubuntu server

1.创建Ubuntu-server的启动盘 首先要从官网下载Ubuntu-server18.04的ISO文件,用rufs烧录到U盘。如下所示 2. 磁盘分区 在windows创建两个盘(linuxboot 和linuxroot),后面一个一个用于boot,一个用于root. 3.开机U盘启…

Flutter学习10 - Json解析与Model使用

对于网络请求返回的 Json 数据&#xff0c;一般会进行如下解析&#xff1a; 将 Json String 解析为 Map<String, dynamic>将 Json String 解析为 Dart Model 发起一个返回 Json String 的网络请求 import package:http/http.dart as http;void main() {_doGet(); }_do…