• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            大龍的博客

            常用鏈接

            統(tǒng)計(jì)

            最新評(píng)論

            如何在mysql中創(chuàng)建內(nèi)存表 --- 轉(zhuǎn)

            如何創(chuàng)建內(nèi)存表?
                創(chuàng)建內(nèi)存表非常的簡(jiǎn)單,只需注明 ENGINE= MEMORY 即可:
                CREATE TABLE  `tablename` ( `columnName` varchar(256) NOT NUL) ENGINE=MEMORY DEFAULT CHARSET=latin1 MAX_ROWS=100000000;

             

            注意
                當(dāng)內(nèi)存表中的數(shù)據(jù)大于max_heap_table_size設(shè)定的容量大小時(shí),mysql會(huì)轉(zhuǎn)換超出的數(shù)據(jù)存儲(chǔ)到磁盤上,因此這是性能就大打折扣了,所以我們還需要根據(jù)我們的實(shí)際情況調(diào)整max_heap_table_size,例如在.cnf文件中[mysqld]的下面加入:
                    max_heap_table_size = 2048M
                另外在建表語(yǔ)句中還可以通過(guò)MAX_ROWS來(lái)控制表的記錄數(shù)。

            內(nèi)存表使用哈希散列索引把數(shù)據(jù)保存在內(nèi)存中,因此具有極快的速度,適合緩存中小型數(shù)據(jù)庫(kù),但是使用上受到一些限制,以下是藍(lán)草使用的一些感受。

            1、heap對(duì)所有用戶的連接是可見(jiàn)的,這使得它非常適合做緩存。

            2、僅適合使用的場(chǎng)合。heap不允許使用xxxTEXT和xxxBLOB數(shù)據(jù)類型;只允許使用=和<=>操作符來(lái)搜索記錄(不允許<、>、<=或>=);不支持auto_increment;只允許對(duì)非空數(shù)據(jù)列進(jìn)行索引(not null)。
            注:操作符 “<=>” 說(shuō)明:NULL-safe equal.這個(gè)操作符和“=”操作符執(zhí)行相同的比較操作,不過(guò)在兩個(gè)操作碼均為NULL時(shí),其所得值為1而不為NULL,而當(dāng)一個(gè)操作碼為NULL時(shí),其所得值為0而不為NULL。

            3、一旦服務(wù)器重啟,所有heap表數(shù)據(jù)丟失,但是heap表結(jié)構(gòu)仍然存在,因?yàn)閔eap表結(jié)構(gòu)是存放在實(shí)際數(shù)據(jù)庫(kù)路徑下的,不會(huì)自動(dòng)刪除。重啟之后,heap將被清空,這時(shí)候?qū)eap的查詢結(jié)果都是空的。

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

            5、對(duì)于重啟造成的數(shù)據(jù)丟失,有以下的解決辦法:
             a、在任何查詢之前,執(zhí)行一次簡(jiǎn)單的查詢,判斷heap表是否存在數(shù)據(jù),如果不存在,則把數(shù)據(jù)重新寫入,或者DROP表重新復(fù)制某張表。這需要多做一次查詢。不過(guò)可以寫成include文件,在需要用該heap表的頁(yè)面隨時(shí)調(diào)用,比較方便。
             b、對(duì)于需要該heap表的頁(yè)面,在該頁(yè)面第一次且僅在第一次查詢?cè)摫頃r(shí),對(duì)數(shù)據(jù)集結(jié)果進(jìn)行判斷,如果結(jié)果為空,則需要重新寫入數(shù)據(jù)。這樣可以節(jié)省一次查詢。
             c、更好的辦法是在mysql每次重新啟動(dòng)時(shí)自動(dòng)寫入數(shù)據(jù)到heap,但是需要配置服務(wù)器,過(guò)程比較復(fù)雜,通用性受到限制。

            6、一些預(yù)期可能用到的sql語(yǔ)句

            //如果表存在,則刪除
            DROP TABLE IF EXISTS `abc`;
            //復(fù)制整張表xyz為heap表abc(包含所有數(shù)據(jù))
            CREATE TABLE `abc` type=heap select * from `xyz`;
            //添加主鍵id
            ALTER TABLE `abc` ADD PRIMARY KEY (`id`);
            //添加索引username
            ALTER TABLE `abc` ADD INDEX `abc` (`username`);
            出自藍(lán)草空間

            posted on 2009-05-27 17:58 大龍 閱讀(2060) 評(píng)論(1)  編輯 收藏 引用

            評(píng)論

            # re: 如何在mysql中創(chuàng)建內(nèi)存表 --- 轉(zhuǎn) 2011-03-01 17:44 藍(lán)龍工作室

            學(xué)習(xí)了,剛好要用的。  回復(fù)  更多評(píng)論   

            国内精品久久久久影院薰衣草 | 久久99热这里只有精品国产| 亚洲一区二区三区日本久久九| 久久夜色精品国产噜噜亚洲AV| 91久久香蕉国产熟女线看| 99久久99久久精品国产片果冻| 欧美粉嫩小泬久久久久久久| 亚洲午夜久久久久妓女影院| 亚洲国产天堂久久综合网站| 欧美伊人久久大香线蕉综合| 久久精品国产亚洲av麻豆小说 | 久久亚洲熟女cc98cm| 国产成人精品久久一区二区三区| 久久一本综合| 久久精品视频网| 国产aⅴ激情无码久久| 久久久久综合中文字幕| 青青青青久久精品国产| 五月丁香综合激情六月久久| 久久精品国产亚洲av瑜伽| 国产精品久久久久久久| 亚洲AV无码久久精品狠狠爱浪潮| 久久99久久无码毛片一区二区| 国产三级久久久精品麻豆三级| 无码国内精品久久人妻麻豆按摩| av午夜福利一片免费看久久| 亚洲成色WWW久久网站| 久久亚洲中文字幕精品一区| 国内精品久久久久久久涩爱| 72种姿势欧美久久久久大黄蕉| 国产69精品久久久久9999APGF| 久久亚洲av无码精品浪潮| 久久高潮一级毛片免费| 久久精品这里只有精99品| 精品久久久久中文字幕一区| 色偷偷888欧美精品久久久| 久久精品国产亚洲网站| 88久久精品无码一区二区毛片 | 久久青青草原综合伊人| 久久99精品国产99久久| 国产免费福利体检区久久|