MySQL临时表与内存表
在MySQL中有三种虚拟表:临时表、内存表、视图。下面简单介绍一下临时表和内存表的使用。
1、临时表
MySQL临时表在我们需要保存一些临时数据时是非常有用的。临时表在MySQL 3.23版本中添加。临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。如果你使用了其他MySQL客户端程序连接MySQL数据库服务器来创建临时表,那么只有在关闭客户端程序时才会销毁临时表,当然你也可以手动销毁。
1.1 创建临时表
在MySQL中创建临时表使用CREATE TEMPORARY TABLE语句,其语法格式如下:

示例:创建临时表。

还可以通过复制表的方式来创建临时表。
示例:通过复制表的方式来创建临时表。

1.2 删除临时表
默认情况下,当你断开与数据库的连接后,临时表就会自动被销毁。当然你也可以在当前MySQL会话中手动删除临时表。删除临时表与删除普通表的语句是一样的,使用 DROP TABLE语句。
示例:删除临时表。

1.3 使用临时表的注意事项
(1)临时表只在当前连接可见,当这个连接关闭的时候,会自动drop。比如打开mysql 就是一个连接会话。两个不同的连接可以使用相同名字的临时表,两个表之间不存在什么关系,如果临时表的名字和已经存在的磁盘表名字一样,那么临时表会暂时覆盖磁盘表。就是说,你select 查询,只会显示临时表里面的,不会显示磁盘表。
(2)临时表的存储引擎:memor,myisam,merge,innodb,临时表不支持mysql cluster簇。
(3)同一个查询语句,只能用一次临时表,就是说不能将表和自己做连接等。
(4)重命名表,不能用rename 可以用alter table代替。
(5)如果超出了临时表的容量,临时表会转换成磁盘表。
(6)show tables语句不会列出临时表,在information_schema中也不存在临时表信息,show create table可以查看临时表。
2、内存表
内存表的表结构建立在磁盘里面,数据放在内存里面;
当MySQL断开当前连接后,临时表的表结构和表数据都没了,但内存表的表结构和表数据都存在;
当MySQL服务重启之后,内存表的数据会丢失,但表结构依旧存。
2.1 创建内存表
创建内存表与创建普通表一样,使用CREATE TABLE语句,但需要将存储引擎设置为:ENGINE = MEMORY。其语法格式如下:

示例:创建内存表。

2.2 删除内存表
删除内存表与删除普通表的语句是一样的,使用 DROP TABLE语句。
示例:删除内存表。

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

MySQL临时表与内存表的更多相关文章
- mysql 临时表和内存表
查看内存表的最大值: show variables like '%heap%'; mysql> show variables like '%heap%'; +------------------ ...
- mysql优化: 内存表和临时表
由于直接使用临时表来创建中间表,其速度不如人意,因而就有了把临时表建成内存表的想法.但内存表和临时表的区别且并不熟悉,需要查找资料了.一开始以为临时表是创建后存在,当连接断开时临时表就会被删除,即临时 ...
- MySQL临时表与派生表(简略版)
MySQL临时表与派生表 当主查询中包含派生表,或者当select 语句中包含union字句,或者当select语句中包含一个字段的order by 子句(对另一个字段的group by 子句)时,M ...
- MySQL内存表-临时表
HEAP表是访问数据速度最快的MySQL表,他使用保存在内存中的散列索引.但如果MySQL或者服务器重新启动,表中数据将会丢失.用法:如论坛的在线人数统计,这种表的数据应该是无关紧要的,就几个简单的字 ...
- MySQL内存表的特性与使用介绍
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- 关于mysql内存表的一个帖子(转载)
地址:http://bbs.csdn.net/topics/360030699 引用楼主 zgycsmb 的回复:问:1mysql的内存表性能怎么样2mysql的内存表与system v 这种共享内存 ...
- MySql 内存表使用
MySql 内存表使用 内存表使用哈希散列索引把数据保存在内存中,因此具有极快的速度,适合缓存中小型数据库,但是使用上受到一些限制,以下是蓝草使用的一些感受. 1.heap对所有用户的连接是可见的,这 ...
- mysql临时表的产生
sql执行会生成一个巨大的临时表,当内存放不下时,要全部copy 到磁盘,导致IO飙升,时间开销增大. 额外收获知识收藏如下: 临时表存储 MySQL临时表分为"内存临时表"和&q ...
- mysql临时表产生的执行效率问题改进(转)
问题: 近日,线上MySQL查出一个慢sql,每次都要查询1000ms以上,严重影响用户体验 今得空去诊断一番,记录如下: sql原句: SELECT r.object_id AS cardId, c ...
随机推荐
- 使用 VSCode 搭建 Flutter环境
概述 编辑器使用 vscode,不再安装 Android Studio. 安装 Git 点击这里 下载并安装 Git 配置 Java 环境 下载和安装 JDK 点击下载 Java SE Develop ...
- 详解API Gateway流控实现,揭开ROMA平台高性能秒级流控的技术细节
摘要:ROMA平台的核心系统ROMA Connect源自华为流程IT的集成平台,在华为内部有超过15年的企业业务集成经验. 本文分享自华为云社区<ROMA集成关键技术(1)-API流控技术详解& ...
- maven手动添加库文件
项目应用到了ojdbc,dubbo等私有库,maven无法直接下载,需要手动下载后添加到maven本地库里面. 以下以ojdbc为例: 1.下载jar后,cmd添加到本地库: mvn install: ...
- python -- 程序结构
一.程序结构 • 定义python文件的头部模板:在File->Settings->Editor->File and Code Templates->Python script ...
- PAT乙级:1064 朋友数 (20分)
PAT乙级:1064 朋友数 (20分) 题干 如果两个整数各位数字的和是一样的,则被称为是"朋友数",而那个公共的和就是它们的"朋友证号".例如 123 和 ...
- SQL慢查询排查思路
前言 平时在工作中每天都会做巡检,将前一天所有超过500ms的慢SQL排查出来 查找原因,是否能进行优化.慢慢中,在形成了一套思路方法论. 我个人认为对于排查慢SQL还是有一定的帮助 (一).是否是S ...
- VUP虚拟直播与光学动作捕捉技术
虚拟直播将虚拟场景.虚拟形象实时显示在观众面前,虚拟场景与人物替代了原有的耗费较大搭建成本的实景场景与真人出镜,为观众带来全新的视觉体验,同时新技术降低了原有场景搭建成本,是近些年继AI.VR.动作捕 ...
- 浅析VO、DTO、DO、PO的概念、区别和用处(八)
本篇文章主要讨论一下我们经常会用到的一些对象:VO.DTO.DO和PO. 由于不同的项目和开发人员有不同的命名习惯,这里我首先对上述的概念进行一个简单描述,名字只是个标识,我们重点关注其概念: 概念: ...
- Java 正则表达式 简单用法
正则表达式的具体写法网上有很多了,这里只记录在 Java 中怎么使用. java.util.regex.Matcher.java.util.regex.Pattern 主要有: String.matc ...
- ; 按快捷键`(即波浪号~所在的键盘按键)立即打开随身U盘中的办公专用文件夹
; 按快捷键`(即波浪号~所在的键盘按键)立即打开随身U盘中的办公专用文件夹; WorkFolderHotkey.ahk;; http://www.autoahk.com/; https://www. ...