mysql 資料表主要支援六種型別 ,分別是:bdb、heap、isam、merge、myisam、innobdb。
這六種又分為兩類,一類是」事務安全型」(transaction-safe),包括bdb和innodb;其餘都屬於第二類,稱為」非事務安全型」(non-transaction-safe)。
bdb全稱是」brekeley db」,它是mysql最早的具有事務能力的表的型別,由sleepycat software (開發。它提供了事務控制能力功能,它確保一組命令全部執行成功,或者當任何乙個命令出現錯誤時所有命令的結果都被回退,可以想像在電子銀行中事務控制能力是非常重要的。支援commit、rollback和其他事務特性。最新版本的mysql已經計畫移除對bdb的支援,轉而全力發展innodb。
innodb 是較新的事務安全型儲存引擎,用於事務處理應用程式,支援bdb的幾乎所有特性,並具有眾多新特性,包括acid事務支援。
特性:事務處理機制
支援外鏈
崩潰後能立即恢復
支援外來鍵功能,級聯刪除
支援併發能力
在硬碟上的儲存方式:innobdb frm
最新版本的mysql已經計畫移除對bdb的支援,轉而全力發展innodb。innodb對mysql有更好的特性支援,而且開發社群活躍。
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開發者提供的示例引擎。
有關操作和檢視表型別的命令語法如下
--建立表時指定表型別的方法
create table`message` (
`id`int(11) not nullauto_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;--檢視表型別(儲存引擎) test是資料庫名稱
show table status from`test`;---- 結果為資料庫test中所有表的資訊,其中第二項type即是表的型別。
--檢視表型別(儲存引擎)2 message是表名稱
show create table`message`;---- 結果為表message建立時的資訊,其中有type或engine一項,指定了表的型別(儲存引擎)。--show tables不能得到表型別的資訊。
注意:老版本的mysql使用 type而不是engine(例如,type = myisam)。mysql 5.1為向下相容而支援這個語法,但type現在被輕視,而engine 是首先的用法。 一般地,engine選項是不必要的;除非預設已經被改變了,myisam是預設儲存引擎。
資料表的可移植性
就檔案層次的操作來說,某些資料表是可以直接單獨拷貝表檔案來移動的,見下表
isam
nomyiasm
yesbdb
noinnobdb
yes
mysql 表 型別 mysql表型別
mysql支援6種不同的表型別 bdb innodb heap isam merge以及myisam。其中 bdb,innodb單獨屬於一類,稱為 事務安全型 transaction safe 其餘的表型別屬於第二類,稱為 非事務安全型 non transaction safe 事務安全型 bdbb...
MySql的表型別
create database sample create table t user id int 11 not null auto increment,name varchar 100 not null default primary key id type myisam 選項只在mysql 3....
Mysql表的型別
分為一種是myisam,另一種是innodb mysql預設的就是innodb 建立表的時候顯示指定 create table a id int not null auto increment primary key,name varchar 255 engine innodb 或 create t...