mysql表型別(引擎)介紹

2021-07-05 20:23:16 字數 2991 閱讀 2387

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事務支援。

特性:

最新版本的mysql已經計畫移除對bdb的支援,轉而全力發展innodb。innodb對mysql有更好的特性支援,而且開發社群活躍。

myisam預設的mysql外掛程式式儲存引擎,它是基於isam型別,但它增加了許多有用的擴充套件,它是在web、資料倉儲和其他應用環境下最常使用的儲存引擎之一。注意,通過更改storage_engine配置變數,能夠方便地更改mysql伺服器的預設儲存引擎。

優點:

isam是myisam型別出現之前mysql表使用的預設型別,現在已經被myisam代替。

memory (heap)是mysql表中訪問最快的表,將所有資料儲存在ram中,在需要快速查詢引用和其他類似資料的環境下,可提供極快的訪問。注意,這種型別下資料是非持久化設計的,它一般適應於臨時表,如果mysql或者伺服器崩潰,表中資料全部丟失。

merge是一種值得關注的新式表,它是由一組myisam表組成,之所合併主要出於效能上考慮,因為它能夠提高搜尋速度,提高修復效率,節省磁碟空 間。允許mysql dba或開發人員將一系列等同的myisam表以邏輯方式組合在一起,並作為1個物件引用它們。對於諸如資料倉儲等vldb環境十分適合。有時它以mrg_myisam名稱出現。

archive為大量很少引用的歷史、歸檔、或安全審計資訊的儲存和檢索提供了完美的解決方案。

federated能夠將多個分離的mysql伺服器鏈結起來,從多個物理伺服器建立乙個邏輯資料庫。十分適合於分布式環境或資料集市環境。

ndbcluster/cluster/ndbmysql的簇式資料庫引擎,尤其適合於具有高效能查詢要求的應用程式,這類查詢需求還要求具有最高的正常工作時間和可用性。

csv使用標準的csv格式,由逗號隔開的文字檔案,適應於外部資料交換

blackhole它會接受資料但不儲存,而且對任何檢索請求返回乙個空集。它一般適應於資料會被自動複製並不進行本地儲存的分布式資料庫設計。(不確定的)似乎也可以用於臨時禁止/忽略對資料庫的應用程式輸入。

example這是乙個測試引擎,你可以建立乙個這樣的表,但既不能寫入資料,也不能檢索資料。它似乎是乙個針對mysql開發者提供的示例引擎。

? [copy to clipboard]

view code sql

123

4567

891011

1213

1415

1617

1819

2021

2223

24

--

-- 建立表時指定表型別的方法

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即是表的型別。

-- 檢視表型別(儲存引擎)2

show create table `message`;

-- -- 結果為表message建立時的資訊,其中有type或engine一項,指定了表的型別(儲存引擎)。

-- show tables不能得到表型別的資訊。

注意:老版本的mysql使用 type而不是engine(例如,type = myisam)。mysql 5.1為向下相容而支援這個語法,但type現在被輕視,而engine 是首先的用法。 一般地,engine選項是不必要的;除非預設已經被改變了,myisam是預設儲存引擎。

常用的資料移植方法:把資料表的內容匯出到乙個文字檔案中,然後拷貝到硬碟上,然後匯入目標資料庫裡面。

就檔案層次的操作來說,某些資料表是可以直接單獨拷貝表檔案來移動的,見下表

isamno

myiasmyes

bdbno

innobdbyes

MYSQL 儲存引擎(表型別)

外掛程式式儲存引擎是 mysql 資料庫最重要的特性之一,使用者可以根據應用的需要選擇如 何儲存和索引資料 是否使用事務等。mysql 預設支援多種儲存引擎,以適用於不同領域 的資料庫應用需要,使用者可以通過選擇使用不同的儲存引擎提高應用的效率,提供靈活的存 儲,使用者甚至可以按照自己的需要定製和使...

MySQL的儲存引擎(表型別)

筆記 mysql屬於資料庫管理系統,包括資料庫和用於訪問管理資料庫的介面系統。資料庫負責儲存資料,介面系統負責管理資料庫。不同使用者對資料的容量 訪問速度 資料安全性有不用需求。為了滿足使用者的不同需求,mysql採用多種儲存引擎進行資料儲存。儲存引擎指定了表的儲存型別 即如何儲存和索引資料 是否支...

mysql引擎介紹

myisam儲存引擎的表在資料庫中,每乙個表都被存放為三個以表名命名的物理檔案。首先肯定會有任何儲存引擎都不可缺少的存放表結構定義資訊的.frm檔案,另外還有.myd和.myi檔案,分別存放了表的資料 myd 和索引資料 myi 每個表都有且僅有這樣三個檔案做為myisam儲存型別的表的儲存,也就是...