MySQL實際上支持五種不同的表類型,有些人可能會對此感到不同尋常。這五種類型分別是BDB、HEAP、ISAM、MERGE以及MyISAM。其中BDB類型單獨屬于一類,稱為“事務安全型”(transaction-safe),其余的表類型屬于第二類,稱為“非事務安全型”(non-transaction-safe)。下面我們詳細介紹這些表類型。
事務安全型
▲ BDB
BDB全稱是“Berkeley DB”,它是MySQL具有事務能力的表類型,由Sleepycat Software ()開發。BDB表類型提供了MySQL用戶長久期盼的功能,即事務控制能力。在任何RDBMS中,事務控制能力都是一種極其重要和寶貴的功能。事務控制能力使得我們能夠確保一組命令確實已經全部執行成功,或者確保當任何一個命令出現錯誤時所有命令的執行結果均被回退??梢韵胂?,在電子銀行這類應用中事務控制能力是極其重要的。
非事務安全型
▲ HEAP
HEAP表是訪問數據速度最快的MySQL表,這是因為這類表使用保存在內存中的散列索引。但有極其重要的一點必須注意,如果MySQL或者服務器崩潰,HEAP表中的數據將會丟失!
▲ ISAM
ISAM表類型是MyISAM出現之前MySQL的默認表類型,所以現在這種表類型是不推薦使用的,建議改用MyISAM表。
▲ MERGE
MERGE是一種值得關注的新式表類型,在3.23.25版中提供。MERGE表實際上由一組同樣的MyISAM表合并而成。之所以要把多個同樣的表合并成一個,主要是出于性能上的考慮,因為它能夠提高搜索速度、提高修復效率、節省磁盤空間。
當前的MERGE表類型仍舊屬于BETA版本,但相信正式版本很快就會出現。
▲ MyISAM
MyISAM表類型是MySQL默認的表類型。MyISAM表類型以ISAM為基礎,但增加了許多有用的擴展。下面是部分用MyISAM表類型取代ISAM表類型的原因:
MyISAM表比ISAM表要小,因而占用資源更少。
MyISAM表在不同的平臺間二進制可移植。
MyISAM還有其他許多優點。請訪問查看關于該表類型的完整說明。
表的類型在創建表時指定。在下面這個例子中我們創建了一個HEAP類型的表:
mysql >CREATE TABLE email_addresses TYPE=HEAP (
- >email char(55) NOT NULL,
- >name char(30) NOT NULL,
- >PRIMARY KEY(email) );
創建BDB表需要更多的配置參數,請參考了解完整說明以及要使用BDB表應該做哪些準備。
MySQL 4.0將增加兩種新的表類型,即Innobase和Gemeni。關于這兩種表類型現在能夠得到的信息還不多。
關于MySQL表類型,有待學習的知識實在太多,本文簡短的介紹不可能做到完整和詳盡。建議訪問MySQL文檔()了解更詳盡的信息。