標籤:
和大多數資料庫不同,在MySQL中存在一個儲存引擎的概念,針對不同的儲存需求可以選擇最優的儲存引擎。
一、MySQL儲存引擎概述
外掛程式式儲存引擎是MySQL資料庫最重要的特徵之一,使用者可以根據應用的需要尋找如何儲存和索引資料、是否使用事務等。MySQL預設支援多種儲存引擎,以適用於不同領域的資料庫應用需求,使用者可以通過選擇選擇不同的儲存引擎提供應用的效率,提供靈活的儲存,使用者甚至可以按照自己的需要定製和使用自己的儲存引擎,以實現最大程度的可定製性。
MySQL支援的儲存引擎包括MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE、CVS、BLACKHOLE、FEDERATED等,其中InnoDB和BDB提供事務安全表,其他儲存引擎都是非事務安全表。
預設情況下,建立表時未指定表的儲存引擎,則該表使用預設的儲存引擎。如果需要修改預設的儲存引擎,則可以在參數檔案中設定defalut-table-type。查看當前的預設儲存引擎,可以使用如下命令:
show variables like ‘table_type‘;
可以通過下列兩種方法查詢當前資料庫支援的儲存引擎:
mysql> show engines;mysql> show variables like ‘have%‘;
在建立表時,可以通過增加ENGINE關鍵字設定表的儲存引擎:
CREATE TABLE table_name1( ...) ENGINE=MyISAM;CREATE TABLE table_name2( ...) ENGINE=InnoDB;
也可以通過ALTER TABLE語句將一個已經存在的表修改成其他的儲存引擎:
alter table table_name ENGINE=innodb;
二、MySQL中各類儲存引擎的特徵見下表:
| 特點 |
MyISAM |
InnoDB |
Memory |
Merge |
NDB |
| 儲存限制 |
有 |
64TB |
有 |
沒有 |
有 |
| 事務安全 |
|
支援 |
|
|
|
| 鎖機制 |
表鎖 |
行鎖 |
表鎖 |
表鎖 |
行鎖 |
| B樹索引 |
支援 |
支援 |
支援 |
支援 |
支援 |
| 雜湊索引 |
|
支援 |
|
|
支援 |
| 全文索引 |
支援 |
|
|
|
|
| 叢集索引 |
|
支援 |
|
|
|
| 資料緩衝 |
|
支援 |
支援 |
|
支援 |
| 索引緩衝 |
支援 |
支援 |
支援 |
支援 |
支援 |
| 資料可壓縮 |
支援 |
|
|
|
|
| 空間使用 |
低 |
高 |
|
低 |
低 |
| 記憶體使用量 |
低 |
高 |
中 |
低 |
高 |
| 批量插入速度 |
高 |
低 |
高 |
高 |
高 |
| 支援外鍵 |
|
支援 |
|
|
|
MySQL學習筆記(1) - 儲存引擎概述