MySQL的記憶體表

來源:互聯網
上載者:User

     “記憶體表”顧名思義建立在記憶體中的表,真是這樣嗎?其實不然,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的主從伺服器上,記憶體表可以被複製

參考資料:

http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.