MySQL所支援的多種儲存引擎

2021-08-15 17:46:00 字數 3419 閱讀 2242

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支援數個儲存引擎作為對不同表的型別的處理器。...