MySQL的記憶體表

2021-09-02 21:18:08 字數 995 閱讀 1913

[quote]

「記憶體表」顧名思義建立在記憶體中的表,真是這樣嗎?其實不然,mysql的記憶體表,表結構建立在磁碟上,資料存放在記憶體中,所以當mysql啟動著的時候,這個表是存在的,資料也是存在的,如果使用者有檢視這個表的許可權,在所有會話裡面,都可以訪問這個記憶體表的資料;當mysql重啟後,資料消失,結構還存在。

記憶體表的建立:

create table test(

id int(10),

num int(10)

) engine=memory default charset=utf8;

檢視是否建立成功:

show tables;

使用完記憶體表後,如果我們想釋放掉占用掉的記憶體,可以有兩種方法:

-- 刪除資料

delete from test;

或者-- 清空表

truncate table test;

再或者-- 刪除表

drop table test;

對於我們常用的功能來說,記憶體有以下特徵:

1.對於varchar等變長型別,記憶體表使用固定的長度來存放;

2.記憶體表可以有非唯一鍵;

3.記憶體表不能包含blob或者text列;

4.記憶體表支援auto_increment列;

5.記憶體表支援插入延遲,使讀取優先;

6.非臨時記憶體表和其它非記憶體表一樣在所有客戶端直接共享;

我們使用記憶體表的時候,需要注意以下幾個方面:

1.伺服器記憶體足夠大;

2.我們建立的記憶體表和mysql內部臨時表有所不同:

記憶體表的資料存放在記憶體中,而內部臨時表(我們的query語句產生的)在恰當的時候存放在記憶體中,當內部臨時表變得很大時,mysql會自動地把它轉化為 在磁碟上儲存的表,而我們建立的記憶體表,卻不會自動轉換。

3.當我們單獨地delete from 某個記憶體表的時候,不會**記憶體;只有當整個表被delete的時候,才會**記憶體;

4.在mysql的主從伺服器上,記憶體表可以被複製

mysql記憶體表 MySQL的記憶體表

記憶體表 顧名思義建立在記憶體中的表,真是這樣嗎?其實不然,mysql的記憶體表,表結構建立在磁碟上,資料存放在記憶體中,所以當mysql啟動著的時候,這個表是存在的,資料也是存在的,如果使用者有檢視這個表的許可權,在所有會話裡面,都可以訪問這個記憶體表的資料 當mysql重啟後,資料消失,結構還存...

mysql記憶體表 mysql建立記憶體表的方法

如何建立記憶體表?建立記憶體表非常的簡單,只需註明 engine memory 即可 複製 如下 create table tablename columnname varchar 256 not nul engine memory default charset latin1 max rows 1...

mysql記憶體表 mysql建立記憶體表的方法

如何建立記憶體表?建立記憶體表非常的簡單,只需註明 engine memory 即可 create table tablename columnname varchar 256 not nul engine memory default charset latin1 max rows 1000000...