4. memory
5. merge
6. archive
儲存引擎就是儲存資料,建立索引,更新查詢資料等等技術的實現方式 。儲存引擎是基於表的,而不是基於庫的。所以儲存引擎也可被稱為表型別。mysql支援的儲存引擎包含 : innodb 、myisam 、bdb、memory、merge、example、ndb cluster、
archive、csv、blackhole、federated等。如果建立表時如果不指定,系統就會使用預設的儲存引擎innodb,我們可以根據業務的需求選擇不同的儲存引擎。
我們可以使用show engines
來看有哪些儲存引擎可供使用;
在建立表時可以使用engine
關鍵字來指定新建表的儲存引擎;
mysql>
create
table goods_innodb(
-> id int
notnull
auto_increment,-
> name varchar(20
)not
null,-
>
primary
key(id)
->
)engine
=innodb
default
charset
=utf8;
query ok,
0rows affected (
0.02 sec)
也可以使用alter table
語句修改表的儲存引擎;
mysql>
alter
table goods_innodb engine
=myisam;
query ok,
0rows affected (
0.04 sec)
records: 0 duplicates: 0
warnings: 0
mysql>
show
create
table goods_innodb \g**
****
****
****
****
****
****
*1.row***
****
****
****
****
****
****
table: goods_innodb
create
table: create
table
`goods_innodb`
(`id`
int(11)
notnull
auto_increment
,`name`
varchar(20
)not
null
,primary
key(
`id`))
engine
=myisam default
charset
=utf8
1row
inset
(0.00 sec)
常用的資料引擎的對比:
特點innodb
myisam
memory
merge
ndb儲存限制
64tb有有
沒有有事務安全
支援鎖機制
行鎖表鎖
表鎖表鎖
行鎖b樹索引
支援支援
支援支援
支援雜湊索引
支援全文索引
支援支援
集群索引
支援資料索引
支援支援
索引快取
支援支援
支援支援
支援資料可壓縮
支援空間使用高低
n/a低
低記憶體使用高低
中等低低批量插入速度低高
高高高支援外來鍵
支援myisam 不支援事務、也不支援外來鍵,其優勢是訪問的速度快。建立了乙個myisam引擎的tb_demo表,那麼就會生成以下三個檔案:
myisam表無法處理事務,這就意味著有事務處理需求的表,不能使用myisam儲存引擎
適合場景:
3.1 概述
innodb是乙個健壯的事務型儲存引擎,以下場景是使用innodb是最理想的選擇:
自動災難恢復:與其它儲存引擎不同,innodb表能夠自動從災難中恢復
外來鍵約束:在建立外來鍵的時候, 要求父表必須有對應的索引 , 子表在建立外來鍵的
時候, 也會自動的建立對應的索引
支援自動增加列auto_increment屬性
通常來說,innodb相比於myisam寫的效率差一些,並且會占用更多的磁碟空間保留資料和索引。
3.2 外來鍵
在建立索引時, 可以指定在刪除、更新父表時,對子表進行的相應操作,包括:
3.3 儲存方式
innodb 儲存表和索引有以下兩種方式 :
使用mysql memory儲存引擎的出發點是速度。為得到最快的響應時間,採用的邏輯儲存介質是系統記憶體。雖然在記憶體中儲存表資料確實會提供很高的效能,但是,當mysqld守護程序崩潰時,所有的memory資料都會丟失。獲得速度的同時也帶來了一些缺陷。它要求儲存在memory資料表裡的資料使用的是長度不變的格式,以下場景適合使用memory儲存引擎:
merge儲存引擎是一組myisam表的組合,這些myisam表必須結構完全相同,merge表本身並沒有儲存資料,對merge型別的表可以進行查詢、更新、刪除操作,這些操作實際上是對內部的myisam表進行的。
對於merge型別表的插入操作,是通過insert_method子句定義插入的表,可以有3個不同的值,使用first 或last 值使得插入操作被相應地作用在第一或者最後乙個表上,不定義這個子句或者定義為no,表示不能對這個merge表執行插入操作。可以對merge表進行drop操作,但是這個操作只是刪除merge表的定義,對內部的表是沒有任何影響的。
archive是歸檔的意思,在歸檔之後很多的高階功能就不再支援了,僅僅支援最基本的插入和查詢兩種功能。
在mysql 5.5版以前,archive是不支援索引,但是在mysql 5.5以後的版本中就開始支援索引。
MySql 5 6 所支援的儲存引擎
儲存引擎是為不同的表型別處理 sql 操作的 mysql 元件。innodb 是預設的 最通用的儲存引擎,也是官方推薦使用的儲存引擎,除非一些特定案例。mysql 5.6 中的 create table 語句建立的表的儲存引擎預設就是 innodb。mysql 伺服器使用的是乙個可插拔儲存引擎架構,...
MySQL有多種儲存引擎
mysql有多種儲存引擎 myisam innodb merge memory heap bdb berkeleydb example federated archive csv blackhole。mysql支援數個儲存引擎作為對不同表的型別的處理器。mysql儲存引擎包括處理事務安全表的引擎和處...
MySQL的多種儲存引擎總結
mysql有多種儲存引擎,每種儲存引擎有各自的優缺點,可以擇優選擇使用 myisam innodb merge memory heap bdb berkeleydb example federated archive csv blackhole。mysql支援數個儲存引擎作為對不同表的型別的處理器。...