• <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ǔ)到磁盤(pán)上,因此這是性能就大打折扣了,所以我們還需要根據(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)型;只允許使用=和<=>操作符來(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ù)重新寫(xiě)入,或者DROP表重新復(fù)制某張表。這需要多做一次查詢。不過(guò)可以寫(xiě)成include文件,在需要用該heap表的頁(yè)面隨時(shí)調(diào)用,比較方便。
             b、對(duì)于需要該heap表的頁(yè)面,在該頁(yè)面第一次且僅在第一次查詢?cè)摫頃r(shí),對(duì)數(shù)據(jù)集結(jié)果進(jìn)行判斷,如果結(jié)果為空,則需要重新寫(xiě)入數(shù)據(jù)。這樣可以節(jié)省一次查詢。
             c、更好的辦法是在mysql每次重新啟動(dòng)時(shí)自動(dòng)寫(xiě)入數(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)論   


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            久久精品成人一区二区三区| 久久久久AV综合网成人| 久久夜色精品国产| 狠狠色噜噜色狠狠狠综合久久| 色欲av伊人久久大香线蕉影院| 久久99国产精一区二区三区 | 久久天天躁狠狠躁夜夜96流白浆| 久久久久久人妻无码| 国产精品久久久久久久午夜片| 久久午夜福利无码1000合集| 9191精品国产免费久久| 伊人久久大香线焦AV综合影院| 久久精品嫩草影院| 亚洲精品无码久久久久sm| 国产精品gz久久久| 久久精品国产精品国产精品污| 久久久久久伊人高潮影院| 久久综合九色欧美综合狠狠| 天天久久狠狠色综合| 日韩乱码人妻无码中文字幕久久| 色偷偷88欧美精品久久久| 狠狠色婷婷综合天天久久丁香| 久久99热这里只有精品国产| 久久久国产精品| 久久精品无码一区二区三区免费 | 精品国际久久久久999波多野| 波多野结衣久久一区二区| 香蕉99久久国产综合精品宅男自 | 94久久国产乱子伦精品免费| 91久久精一区二区三区大全| 久久久噜噜噜www成人网| 人妻无码αv中文字幕久久琪琪布| 久久高清一级毛片| 久久99国产精品成人欧美| 亚洲综合久久综合激情久久| 国产精品99久久久久久猫咪| 久久精品国产亚洲5555| 久久综合伊人77777| 精品久久久久久久国产潘金莲| 中文字幕久久亚洲一区| 亚洲七七久久精品中文国产|