欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

解析Mysql临时表及特点

程序员文章站 2024-02-24 23:54:52
临时表是当连接没有断开时存在,一旦断开就不会存在,临时表的数据和结构都在内存中,可以做个测验,你创建一个临时表,但是到响应的数据目录下并不会找到.frm文件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机数据将不存在。该表因为数据是在内存中,所以数据会很快。缺点是安全性。