国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - MySQL內存表的特性與使用介紹

MySQL內存表的特性與使用介紹

2019-12-19 14:20MYSQL教程網 Mysql

臨時表和內存表都可以人工創建,但臨時表更多的作用是系統自己創建后,組織數據以提升性能,如子查詢,臨時表在多個連接之間不能共享。這里只討論內存表

內存表,就是放在內存中的表,所使用內存的大小可通過My.cnf中的max_heap_table_size指定,如max_heap_table_size=1024M,內存表與臨時表并不相同,臨時表也是存放在內存中,臨時表最大所需內存需要通過tmp_table_size = 128M設定。當數據超過臨時表的最大值設定時,自動轉為磁盤表,此時因需要進行IO操作,性能會大大下降,而內存表不會,內存表滿后,會提示數據滿錯誤。

臨時表和內存表都可以人工創建,但臨時表更多的作用是系統自己創建后,組織數據以提升性能,如子查詢,臨時表在多個連接之間不能共享。這里只討論內存表

創建表是,用engine=heap可創建(mysql5.5中已經不支持type,以后都用engine,形成習慣)。

 

復制代碼代碼如下:

create table test
(
 id int unsigned not null auto_increment primary key,
 state char(10),
 type char(20),
 date char(30)
)ENGINE=MEMORY DEFAULT CHARSET=utf8;

 

內存表的特性

內存表的表定義是存放在磁盤上的,擴展名為.frm, 所以重啟不會丟失。 
內存表的數據是存放在內存中的,所以重啟會丟失數據。 
內存表使用一個固定的記錄長度格式。 
內存表不支持BLOB或TEXT列,比如varchar與text字段就不會被支持。 
內存表支持AUTO_INCREMENT列和對可包含NULL值的列的索引(網上大多說不支持,這是錯誤的)。內存表支持大于(>) 小于( <)操作,網上也說不支持。 
mysql重啟后,主鍵、自增、索引仍然存在,只是數據丟失。這也是對網上的一些錯誤文字糾正。 
內存表表在所有客戶端之間共享(就像其它任何非TEMPORARY表)。 
MEMORY存儲引擎執行HASH和BTREE索引。你可以通過添加一個如下所示的USING子句為給定的索引指定一個或另一個:

 

復制代碼代碼如下:


CREATE TABLE lookup
(id INT, INDEX USING HASH (id))
ENGINE = MEMORY;

 

CREATE TABLE lookup
(id INT, INDEX USING BTREE (id))
ENGINE = MEMORY;

 

內存表初始化,可以使用--init-file來初始化,避免重啟mysql后數據被清空。比如--init-file="/data/mysql/init.sql", init.sql格式為: 

復制代碼代碼如下:

use db_test;
select *** into m_table;

 

在數據庫復制時,如果主機當掉,則會在binLog中自動加入delete from [內存表],將slave的數據也刪除掉,以保證兩邊的數據一致性。 
內存表不支持事務。 
內存表是表鎖,當修改頻繁時,性能可能會下降。 
內存表的使用
內存表使用哈希散列索引把數據保存在內存中,因此具有極快的速度,適合緩存中小型數據庫,但是使用上受到一些限制。

heap對所有用戶的連接是可見的,這使得它非常適合做緩存。 
僅適合使用的場合。heap不允許使用xxxTEXT和xxxBLOB數據類型。注:操作符 “<=>” 說明:NULL-safe equal.這個操作符和“=”操作符執行相同的比較操作,不過在兩個操作碼均為NULL時,其所得值為1而不為NULL,而當一個操作碼為NULL時,其所得值為0而不為NULL。 
一旦服務器重啟,所有heap表數據丟失,但是heap表結構仍然存在,因為heap表結構是存放在實際數據庫路徑下的,不會自動刪除。重啟之后,heap將被清空,這時候對heap的查詢結果都是空的。 
如果heap是復制的某數據表,則復制之后所有主鍵、索引、自增等格式將不復存在,需要重新添加主鍵和索引,如果需要的話。 
對于重啟造成的數據丟失,有以下的解決辦法: 
在任何查詢之前,執行一次簡單的查詢,判斷heap表是否存在數據,如果不存在,則把數據重新寫入,或者DROP表重新復制某張表。這需要多做一次查詢。不過可以寫成include文件,在需要用該heap表的頁面隨時調用,比較方便。 
對于需要該heap表的頁面,在該頁面第一次且僅在第一次查詢該表時,對數據集結果進行判斷,如果結果為空,則需要重新寫入數據。這樣可以節省一次查詢。 
更好的辦法是在mysql每次重新啟動時自動寫入數據到heap,但是需要配置服務器,過程比較復雜,通用性受到限制。 
小記錄,MyISAM與InnoDB互轉

復制代碼代碼如下:

// InnoDB轉MyISAM
ALTER TABLE `tablename` ENGINE = MYISAM
// MyISAM轉InnoDB
alter table tablename type=innodb;
ALTER TABLE `tablename` ENGINE = InnoDB

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 亚洲久久久久 | 欧美日韩在线免费观看 | 黄色在线免费看 | 亚洲第一视频网站 | 国产亚洲精品美女久久久久久久久久 | 免费一级毛片免费播放 | 国产精品一区视频 | 免费在线一区二区 | 精品玖玖玖 | 国产精品美乳在线观看 | av最新在线| 成人h漫在线观看 | 性色国产| 欧美日韩在线一区 | 国产日韩中文字幕 | 91av蝌蚪 | www国产xxx| 成人影院一区二区 | 国产午夜精品美女视频明星a级 | 亚洲成人一区二区 | 高清三区 | 亚洲色图综合 | 国产精品日韩三级 | 成av在线| 久久99精品久久久久久 | 亚洲国产综合在线 | 欧美1级片| 黄色成人在线观看视频 | 激情五月综合网 | 免费日本视频 | 欧美精品v国产精品v日韩精品 | 国产精品久久久久久久免费大片 | 日韩和欧美一区二区 | 91精品国产综合久久久久久丝袜 | 国产成人欧美一区二区三区的 | 国产一区二区三区免费在线 | 色吧欧美 | 黄色一级片毛片 | 午夜在线观看视频 | 国产精品久久久久国产a级 成人a在线视频 | 日本狠狠干 |