BDB表的特征 |
發(fā)布時(shí)間: 2012/8/24 17:28:40 |
每個(gè)BDB表用兩個(gè)文件被存在磁盤上。文件的名字用表的名字做開(kāi)頭,并且有一個(gè)擴(kuò)展名來(lái)指明文件類型。一個(gè).frm文件存儲(chǔ)表定義,一個(gè).db文件包含表數(shù)據(jù)和索引。 要明確指出你想要一個(gè)BDB表,用ENGINE或TYPE表選項(xiàng)來(lái)指明:
CREATE TABLE t (i INT) ENGINE = BDB;
CREATE TABLE t (i INT) TYPE = BDB;
BerkeleyDB是用ENGINE或者TYPE選項(xiàng)的BDB存儲(chǔ)引擎的“同義詞”。 BDB存儲(chǔ)引擎提供事務(wù)性表,你使用這些表的方法取決于autocommit模式:
· 如果你正運(yùn)行著,同時(shí)隨著autocommit的被允許(這是默認(rèn)的),對(duì)BDB表的改變被立即提交并且不能被回滾。
· 如果你正運(yùn)行著,同時(shí)隨著autocommit的被禁止,改變不變成永久的直到你執(zhí)行一個(gè)COMMIT語(yǔ)句。作為提交的替代,你可以執(zhí)行ROLLBACK來(lái)忘記改變。
你可以用BEGIN WORK語(yǔ)句開(kāi)始一個(gè)事務(wù)來(lái)掛起autocommit,或者用SET AUTOCOMMIT=0來(lái)明確禁止autocommit。 請(qǐng)參閱13.4.1節(jié),“START TRANSACTION, COMMIT和ROLLBACK語(yǔ)法”。 BDB存儲(chǔ)引擎有下列特征: · BDB表可以有多達(dá)每表31個(gè)索引,每個(gè)索引16列,并且1024字節(jié)的最大鍵尺寸。
· MySQL在每個(gè)BDB表中需要一個(gè)PRIMARY KEY以便每一行可以被唯一地識(shí)別。如果你不明確創(chuàng)建一個(gè),MySQL為你創(chuàng)建并維持一個(gè)隱藏的PRIMARY KEY。隱藏的鍵有一個(gè)5字節(jié)的長(zhǎng)度,并且為每個(gè)插入的企圖而被增加。這個(gè)鍵不出現(xiàn)在SHOW CREATE TABLE或DESCRIBE的輸出之中。
· PRIMARY KEY比任何其它索引都要快,因?yàn)镻RIMARY KEY被與行的數(shù)據(jù)一起存儲(chǔ)。其它索引被存儲(chǔ)為鍵數(shù)據(jù)+PRIMARY KEY,所以保持PRIMARY KEY盡可能地短以節(jié)約磁盤空間并獲得更好速度是重要的。
這個(gè)行為類似于InnoDB的,在其中較短的primary keys不僅在主索引也在第二索引節(jié)約空間 。 · 如果在BDB表中,你訪問(wèn)的所有列是同一索引的一部分或主鍵的一部分,MySQL可以執(zhí)行查詢而不訪問(wèn)確實(shí)的行。在一個(gè)MyISAM表中,只有列是同一索引的一部分之時(shí),才可以這么做。
· 連續(xù)掃描比對(duì)MyISAM表的掃描更慢,因?yàn)樵贐DB表中的數(shù)據(jù)被存儲(chǔ)在B樹(shù)而不是在分離的數(shù)據(jù)文件中。 本文出自:億恩科技【1tcdy.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |