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