暫存資料表是當串連沒有斷開時存在,一旦斷開就不會存在,暫存資料表的資料和結構都在記憶體中,可以做個測驗,你建立一個暫存資料表,但是到響應的資料目錄下並不會找到.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機資料將不存在。該表因為資料是在記憶體中,所以資料會很快。缺點是安全性。