程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 解析Mysql臨時表及特點

解析Mysql臨時表及特點

編輯: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機數據將不存在。該表因為數據是在內存中,所以數據會很快。缺點是安全性。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved