国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

MySQL的內存表的基礎學習教程

2020-02-24 14:28:39
字體:
來源:轉載
供稿:網友

MySQL的內存表可以手動創建臨時表和內存表,但臨時表的重要作用是組織數據以提高性能,不能在多個連接之間共享臨時表,本文是武林技術頻道和大家分享的MySQL的內存表的基礎學習教程,一起來看看吧!

這里只討論內存表

創建表是,用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;

內存表的特性

1.對于varchar等變長類型,內存表使用固定的長度來存放;

2.內存表可以有非唯一鍵;

3.內存表不能包含BLOB或者TEXT列;

4.內存表支持AUTO_INCREMENT列;

5.內存表支持插入延遲,使讀取優先;

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

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

1.服務器內存足夠大;

2.我們創建的內存表和MySQL內部臨時表有所不同:

????? 內存表的數據存放在內存中,而內部臨時表(我們的query語句產生的)在恰當的時候存放在內存中,當內部臨時表變得很大時,MySQL會自動地把它轉化為 在磁盤上存儲的表,而我們創建的內存表,卻不會自動轉換。

3.當我們單獨地delete from 某個內存表的時候,不會回收內存;只有當整個表被delete的時候,才會回收內存;

4.在MySQL的主從服務器上,內存表可以被復制

內存表的一些使用限制

MySQL內存表使用哈希散列索引把數據保存在內存中,因此具有極快的速度,適合緩存中小型數據庫,但是使用上受到一些限制。

1、heap對所有用戶的連接是可見的,這使得它非常適合做緩存。

2、僅適合使用的場合。heap不允許使用xxxTEXT和xxxBLOB數據類型;只允許使用=和<=>操作符來搜索記錄(不允許& lt;、>、<=或>=);不支持auto_increment;只允許對非空數據列進行索引(not null)。
注:操作符 “<=>” 說明:NULL-safe equal.這個操作符和“=”操作符執行相同的比較操作,不過在兩個操作碼均為NULL時,其所得值為1而不為NULL,而當一個操作碼為NULL時,其所得值為0而不為NULL。

3、一旦服務器重啟,所有heap表數據丟失,但是heap表結構仍然存在,因為heap表結構是存放在實際數據庫路徑下的,不會自動刪除。重啟之后,heap將被清空,這時候對heap的查詢結果都是空的。

4、如果heap是復制的某數據表,則復制之后所有主鍵、索引、自增等格式將不復存在,需要重新添加主鍵和索引,如果需要的話。

5、對于重啟造成的數據丟失,有以下的解決辦法:
a、在任何查詢之前,執行一次簡單的查詢,判斷heap表是否存在數據,如果不存在,則把數據重新寫入,或者DROP表重新復制某張表。這需要多做一次查詢。不過可以寫成include文件,在需要用該heap表的頁面隨時調用,比較方便。
b、對于需要該heap表的頁面,在該頁面第一次且僅在第一次查詢該表時,對數據集結果進行判斷,如果結果為空,則需要重新寫入數據。這樣可以節省一次查詢。
c、更好的辦法是在mysql每次重新啟動時自動寫入數據到heap,但是需要配置服務器,過程比較復雜,通用性受到限制。
藍草目前采用的是第二種辦法。

6、一些預期可能用到的sql語句

//如果表存在,則刪除DROP TABLE IF EXISTS `abc`;//復制整張表xyz為heap表abc(包含所有數據)CREATE TABLE `abc` type=heap select * from `xyz`;//添加主鍵idALTER TABLE `abc` ADD PRIMARY KEY (`id`);//添加索引usernameALTER TABLE `abc` ADD INDEX `abc` (`username`);

以上就是MySQL的內存表的基礎學習教程的全部內容,如果你還想了解更多C語言的知識,你可以隨時來我們武林技術頻道學習和參考,相信一定能幫助到你。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 金寨县| 轮台县| 丽江市| 云林县| 信丰县| 道真| 和政县| 竹山县| 稻城县| 武清区| 克东县| 廉江市| 云林县| 丰顺县| 黎城县| 通州区| 永靖县| 博爱县| 大连市| 壶关县| 寻乌县| 白城市| 渭南市| 溧水县| 龙胜| 开化县| 湾仔区| 松溪县| 亚东县| 横山县| 常山县| 介休市| 泾源县| 通渭县| 友谊县| 徐闻县| 广汉市| 嘉义市| 唐山市| 庆阳市| 应用必备|