MySQL儲存引擎

蜡笔小新Belief發表於2024-08-23

一、簡介
資料庫儲存引擎是資料庫底層軟體元件,資料庫管理系統(DBMS)使用資料引擎進行建立、查詢、更新和刪除資料操作。不同的儲存引擎提供不同的儲存機制、索引技巧、鎖定水平等功能,使用不同的儲存引擎,還可以獲得特定的功能。現在許多不多的資料庫管理系統都支援多種不同的資料引擎。MySQL的核心就是儲存引擎。

MySQL提供了多個不同的儲存引擎,包括處理事務安全表的引擎和處理非事務安全表的引擎。在MySQL中,不需要在整個伺服器中使用同一種儲存引擎,針對具體的要求,可以對每一個表使用不同的儲存引擎。MySQL5.7支援的儲存引擎有:InnoDB,MyISAM,Memory,Merge,Archive,Federate,CSV,BLACKHOLE等。可以使用SHOW ENGINES語句檢視系統支援的引擎型別,結果如下:

[mysql> SHOW ENGINES \G
*************************** 1. row ***************************
 Engine: MyISAM
Support: YES
Comment: Default engine as of MySQL 3.23 with great performance
*************************** 2. row ***************************
 Engine: MEMORY
Support: YES
Comment: Hash based, stored in memory, useful for temporary tables
*************************** 3. row ***************************
 Engine: InnoDB
Support: DEFAULT
Comment: Supports transactions, row-level locking, and foreign keys
*************************** 4. row ***************************
 Engine: BerkeleyDB
Support: NO
Comment: Supports transactions and page-level locking
*************************** 5. row ***************************
 Engine: BLACKHOLE
Support: NO
Comment: /dev/null storage engine (anything you write to it disappear
*************************** 6. row ***************************
 Engine: EXAMPLE
Support: NO
Comment: Example storage engine
*************************** 7. row ***************************
 Engine: ARCHIVE
Support: YES
Comment: Archive storage engine
*************************** 8. row ***************************
 Engine: CSV
Support: NO
Comment: CSV storage engine
*************************** 9. row ***************************
 Engine: ndbcluster
Support: NO
Comment: Clustered, fault-tolerant, memory-based tables
*************************** 10. row ***************************
 Engine: FEDERATED
Support: NO
Comment: Federated MySQL storage engine
*************************** 11. row ***************************
 Engine: MRG_MYISAM
Support: YES
Comment: Collection of identical MyISAM tables
*************************** 12. row ***************************
 Engine: ISAM
Support: NO
Comment: Obsolete storage engine
12 rows in set (0.00 sec)

mysql>]()

二、MySQL常用儲存引擎介紹
2.1、InnoDB儲存引擎

InnoDB 是事務型資料庫的首選引擎,支援事務安全表(ACID),支援行鎖定和外來鍵。MySQL5.5.5之後,InnoDB 作為預設的儲存引擎,InnoDB 主要特性有:

支援事務
災難恢復性好
為處理巨大資料量的最大效能設計
實現了緩衝管理,不僅能緩衝索引也能緩衝資料,並且會自動建立雜湊索引以加快資料的獲取
支援外來鍵完整性約束。儲存表中的資料時,每張表的儲存都按逐漸順序存放,如果沒有顯示在表定義時指定主鍵,InnoDB會為每一行生成一個6B的ROWID,並以此作為主鍵。
被用在眾多需要高效能的大型資料庫站點上
2.2、MyISAM儲存引擎

MyISAM 基於 ISAM 的儲存引擎,並對其進行擴充套件。它是在Web、資料儲存和其他應用環境下最常使用的儲存引擎之一。MyISAM 擁有較高的插入、查詢速度,但不支援事務。在 MySQL5.5.5 之前的版本中,MyISAM 是預設的儲存引擎。MyISAM 主要特性有:

不支援事務
使用表級鎖,併發性差
主機當機後,MyISAM表易損壞,災難恢復性不佳
可以配合鎖,實現作業系統下的複製備份、遷移
只快取索引,資料的快取是利用作業系統緩衝區來實現的。可能引發過多的系統呼叫且效率不佳
資料緊湊儲存,因此可獲得更小的索引和更快的全表掃描效能
可以把資料檔案和索引檔案放在不同目錄
使用 MyISAM 引擎建立資料庫,將產生3個檔案。檔案的名字以表的名字開始,副檔名指出檔案型別:frm 檔案儲存表定義,資料檔案的副檔名為 .MYD(MYData),索引檔案的副檔名是 .MYI(MYIndex)。

相關文章