記憶體(memory)表和臨時(temporary)表之瞭解

markzy5201190發表於2013-06-07
記憶體(memory)表和臨時(temporary)表之瞭解

**臨時表(temporary):
1.引數:tmp_table_size 64M(最大容量,表增長到此值,會自動轉換為磁碟表)
2.表定義,資料,索引存於記憶體中
3.到閥值,自動轉換為磁碟表,需要進行IO操作,導致DB效能下降
4.存放text,blob型別的資料
5.只存在一次連線中,Mysql斷開連線後被刪除
6.所有客戶端不能共享,否則會提示不存在資訊
7.任何儲存引擎中
8.
Created_tmp_tables 狀態值增加表示,在磁碟上有建立臨時表或臨時錶轉成磁碟表
語法:
create temporary table tbl() engine=xx default charset=utf8;
建立條件:
1.查詢中有排序(order by)和分組(group by)
2.排序中使用過濾重複列(distinct)
3.查詢中用sql_small_result選項

**記憶體表(memory)
1.引數:max_heap_table_size 64M(獨立記憶體表容許最大容量,以防止建立超大記憶體表導致記憶體用盡)
2.表定義存於磁碟中,資料和索引在記憶體中(重啟後資料會丟失)
3.到閥值,會報錯:資料存放已滿
4.不能存放text,blob型別的資料
5.記憶體表支援auto_increment列,可包含NULL值列索引
6.mysql重啟後,主鍵,自增,索引仍然存在,只是資料丟失
7.不支援事務
8.支援hash和B樹索引
9.記憶體表是表鎖,頻繁修改,效能會下降
10.僅memory引擎
語法:
create table tbl(xx...xx)engine=memory default charset=utf8;


早期會大量使用記憶體表作為儲存中小型資料,以來來提搞DML速度,減低IO操作,
但現在隨著memcache/Nosql應用,記憶體表逐漸被取代之;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26855487/viewspace-763440/,如需轉載,請註明出處,否則將追究法律責任。

相關文章