解析Mysql临时表及特点
临时表是当连接没有断开时存在,一旦断开就不会存在,临时表的数据和结构都在内存中,可以做个测验,你创建一个临时表,但是到响应的数据目录下并不会找到.frm文件
mysql> CREATE TEMPORARY TABLE tmp_table (
->
-> name VARCHAR(10) NOT NULL,
-> value INTEGER NOT NULL
->
-> ) ;
Query OK, 0 rows affected (0.38 sec)
查看表状态
mysql> show CREATE TABLE tmp_table \G
*************************** 1. row ***************************
Table: tmp_table
Create Table: CREATE TEMPORARY TABLE `tmp_table` (
`name` varchar(10) NOT NULL,
`value` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
它和正常表没有什么区别,但是数据是存在内存中的,你在响应的数据目录下找不到数据文件。
一旦断开连接你再查该表就会消失。
和临时表有点相似的是内存表,有的也称堆表。
mysql> CREATE TABLE mem_table (
->
-> name VARCHAR(10) NOT NULL,
-> value INTEGER NOT NULL
->
-> ) TYPE = HEAP;
Query OK, 0 rows affected, 1 warning (0.01 sec)
查看表状态
mysql> show CREATE TABLE mem_table \G
*************************** 1. row ***************************
Table: mem_table
Create Table: CREATE TEMPORARY TABLE `mem_table` (
`name` varchar(10) NOT NULL,
`value` int(11) NOT NULL
) ENGINE=MEMORY DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
你在数据目录下回发现一个mem_table.frm文件,所以内存表的数据是放在磁盘上的,但是插入数据后发现磁盘上没有数据文件,所以数据是在内存中的,因为采用的是memory 引擎。一旦down机数据将不存在。该表因为数据是在内存中,所以数据会很快。缺点是安全性。
相关文章
MySQL 客户端不输入用户名和密码直接连接数据库的2个方法
MySQL 客户端不输入用户名和密码直接连接数据库的2个方法,大家可以测试下。2009-07-07
MySQL [Warning] TIMESTAMP with implicit&
本文介绍了MySQL中常见的报错信息及其解决方法,主要包括TIMESTAMP with implicit DEFAULT value is deprecated、ERROR_FOR_DIVISION_BY_ZERO和NO_ZERO_DATE/NO_ZERO_IN_DATE等报错信息,以及对应的配置文件设置和sql_mode修改方法,感兴趣的朋友一起看看吧2025-02-02


最新评论