從我的經(jīng)驗(yàn)談?wù)凪yISAM、InnoDB、BDB三種數(shù)據(jù)表的優(yōu)缺點(diǎn) http://hknng./hknng/archive.php/article/114.html MyISAM 優(yōu)點(diǎn):速度快,磁盤空間占用少;某個(gè)庫或表的磁盤占用情況既可以通過操作系統(tǒng)查相應(yīng)的文件(夾)的大小得知,也可以通過SQL語句SHOW TABLE STATUS查得 缺點(diǎn):沒有數(shù)據(jù)完整性機(jī)制,即不支持事務(wù)和外鍵 InnoDB 優(yōu)點(diǎn):支持事務(wù)和外鍵,數(shù)據(jù)完整性機(jī)制比較完備;可以用SHOW TABLE STATUS查得某個(gè)庫或表的磁盤占用 缺點(diǎn):速度超慢,磁盤空間占用多;所有庫都存于一個(gè)(通常情況)或數(shù)個(gè)文件中,無法通過操作系統(tǒng)了解某個(gè)庫或表的占用空間 BDB 優(yōu)點(diǎn):支持事務(wù),不支持外鍵,由于在事務(wù)支持的基礎(chǔ)上,外鍵可以在數(shù)據(jù)庫的客戶端(可能是最終客戶的服務(wù)器端,例如php)間接實(shí)現(xiàn),所以數(shù)據(jù)完整性仍然是有保障的; 缺點(diǎn):速度慢,磁盤占用多;不能通過SHOW TABLE STATUS查詢某個(gè)庫或表的空間占用;用操作系統(tǒng)可了解庫相應(yīng)的文件夾,或表相應(yīng)的文件的大小,但由于BDB表總是還要產(chǎn)生log文件,而實(shí)際的磁盤占用應(yīng)該把log文件也包含在內(nèi),所以用操作系統(tǒng)查得某庫或表的大小總是小于實(shí)際占用空間。 最早開始做SMCCom,看上了InnoDB的完美的數(shù)據(jù)完整性。微量數(shù)據(jù)測試時(shí),是看不出它的蝸牛速度的,直到某日導(dǎo)入豬窩的數(shù)據(jù)庫(帖子3萬余條記錄)測試,就原形畢露了。 但是繼續(xù)傾向于向數(shù)據(jù)完整性尋求解決,于是又嘗試BDB。經(jīng)過與MyISAM的速度對比,發(fā)現(xiàn)相差不大,于是就投入測試。 直到今天發(fā)現(xiàn)BDB的磁盤占用比MyISAM要大約2倍,考慮到網(wǎng)站轉(zhuǎn)成UTF-8編碼后數(shù)據(jù)量又要增加1/2左右,而數(shù)據(jù)查詢和更新請求非常稀疏,于是決定轉(zhuǎn)用MyISAM了。 |
|