文章目錄
MySQL 資料表主要支援BDB、HEAP、ISAM、MERGE、MYISAM、InnoBDB六種類型。
這六種又分為兩類,一類是”事務安全型”(transaction-safe),包括BDB和InnoDB;其餘都屬於第二類,稱為”非事務安全型”(non-transaction-safe)。
BDB 全稱是”Brekeley DB”,它是Mysql最早的具有事務能力的表的類型,由Sleepycat Software (http://www.sleepycat.com)開發。它提供了事務控制能力功能,它確保一組命令全部執行成功,或者當任何一個命令出現錯誤時所有命令的結果都被回退,可以想像在電子銀行中事務控制能力是非常重要的。支援COMMIT、ROLLBACK和其他事務特性。最新版本的Mysql已經計劃移除對BDB的支援,轉而全力發展InnoDB。
InnoDB
是較新的事務安全型儲存引擎,用於交易處理應用程式,支援BDB的幾乎所有特性,並具有眾多新特性,包括ACID事務支援,其特性如下:
- 交易處理機制
- 支援外鏈
- 崩潰後能立即恢複
- 支援外鍵功能,串聯刪除
- 支援並發能力
- 在硬碟上的儲存方式:InnoBDB frm
MyISAM
預設的MySQL外掛程式式儲存引擎,它是基於ISAM類型,但它增加了許多有用的擴充,它是在Web、資料倉儲和其他應用環境下最常使用的儲存引擎之一。注意,通過更改STORAGE_ENGINE組態變數,能夠方便地更改MySQL伺服器的預設儲存引擎,優點如下:
- 1.比ISAM表更小,所佔資源更少
- 2.可以在不同平台間二進位移植表的類型在建立表時指定。
ISAM
是MyISAM類型出現之前MySQL表使用的預設類型,現在已經被MyISAM代替。
Memory (HEAP)
是MySQL表中訪問最快的表,將所有資料儲存在RAM中,在需要快速尋找引用和其他類似資料的環境下,可提供極快的訪問。注意,這種類型下資料是非持久化設計的,它一般適應於暫存資料表,如果MySQL或者伺服器崩潰,表中資料全部丟失。
Merge
是一種值得關注的新式表,它是由一組MyISAM表組成,之所合并主要出於效能上考慮,因為它能夠提高搜尋速度,提高修複效率,節省磁碟空 間。允許MySQL DBA或開發人員將一系列等同的MyISAM表以邏輯方式組合在一起,並作為1個對象引用它們。對於諸如資料倉儲等VLDB環境十分適合。有時它以 MRG_MYISAM 名稱出現。
Archive
為大量很少引用的曆史、歸檔、或安全審計資訊的儲存和檢索提供了完美的解決方案。
Federated
能夠將多個分離的MySQL伺服器連結起來,從多個物理伺服器建立一個邏輯資料庫。十分適合於分布式環境或資料集市環境。
NDBCluster/Cluster/NDB
MySQL的簇式資料庫引擎,尤其適合於具有高效能尋找要求的應用程式,這類尋找需求還要求具有最高的正常工作時間和可用性。
CSV
使用標準的CSV格式,由逗號隔開的文字檔,適應於外部資料交換
Blackhole
它會接受資料但不儲存,而且對任何檢索請求返回一個空集。它一般適應於資料會被自動複製並不進行本地儲存的分散式資料庫設計。(不確定的)似乎也可以用於臨時禁止/忽略對資料庫的應用程式輸入。
Example
這是一個測試引擎,你可以建立一個這樣的表,但既不能寫入資料,也不能檢索資料。它似乎是一個針對MySql開發人員提供的樣本引擎。
有關操作和查看錶類型的命令文法如下?[Copy to clipboard]View Code SQL
123456789101112131415161718192021222324 |
---- 建立表時指定表類型的方法CREATE TABLE `message` (`id` int(11) NOT NULL auto_increment,`sender` varchar(255) default NULL,`receiver` varchar(255) default NULL,`content` text,`is_read` char(1) default 'N',`send_time` datetime default NULL,`del_flag` tinyint(4) default '0',PRIMARY KEY (`id`)) ENGINE=MYISAM; -- 也可以建立後更改:ALTER TABLE `message` ENGINE = INNODB; -- 查看錶類型(儲存引擎)SHOW TABLE STATUS FROM `test`;-- -- 結果為資料庫test中所有表的資訊,其中第二項type即是表的類型。 -- 查看錶類型(儲存引擎)2SHOW CREATE TABLE `message`;-- -- 結果為表message建立時的資訊,其中有TYPE或ENGINE一項,指定了表的類型(儲存引擎)。-- show tables不能得到表類型的資訊。 |
注意:老版本的MySQL使用 TYPE而不是ENGINE(例如,TYPE = MYISAM)。MySQL 5.1為向下相容而支援這個文法,但TYPE現在被輕視,而ENGINE 是首先的用法。 一般地,ENGINE選項是不必要的;除非預設已經被改變了,MyISAM是預設儲存引擎。
資料表的可移植性
常用的資料移植方法:把資料表的內容匯出到一個文字檔中,然後拷貝到硬碟上,然後匯入目標資料庫裡面。
就檔案層次的操作來說,某些資料表是可以直接單獨拷貝表檔案來移動的,見下表
ISAM |
No |
MyIASM |
Yes |
BDB |
No |
InnoBDB |
Yes |
查看資料庫所有表
SHOW TABLE STATUS;