存儲引擎是數據庫管理系統用來從數據庫創建,讀取和更新數據的軟件模塊。MySQL中有兩種類型的存儲引擎:事務性和非事務性。對于MySQL 5.5及更高版本,默認存儲引擎為InnoDB。在5.5版之前,MySQL的默認存儲引擎是MyISAM。那么MySQL 存儲引擎有哪些?區別是什么?其實關于MySQL 存儲引擎有九大類型,但是區別卻只有兩個,以下是詳細介紹。
MySQL 存儲引擎有哪些?
1、InnoDB
這是MySQL 5.5或更高版本的默認存儲引擎。它提供了事務安全表,支持外鍵引用完整性約束。它支持提交、回滾和緊急恢復功能來保護數據。它還支持行級鎖定。當在多用戶環境中使用時,它的“一致非鎖定讀取”提高了性能。它將數據存儲在集群索引中,從而減少了基于主鍵的查詢的I/O。
2、MyISAM
該存儲引擎管理非事務性表,提供高速存儲和檢索,支持全文搜索。
3、MEMORY
提供內存中的表,以前稱為堆。它在RAM中處理所有數據,以便比在磁盤上存儲數據更快地訪問。用于快速查找引用和其他相同的數據。
4、MERGE
將多個類似的MyISAM表分組為一個表,可以處理非事務性表,默認情況下包括這些表。
5、EXAMPLE
你可以使用此引擎創建表,但不能存儲或獲取數據。這樣做的目的是教開發人員如何編寫新的存儲引擎。
6、ARCHIVE
用于存儲大量數據,不支持索引。
7、CSV
在文本文件中以逗號分隔值格式存儲數據。
8、BLACKHOLE
受要存儲的數據,但始終返回空。
9、FEDERATED
將數據存儲在遠程數據庫中。
MySQL 存儲引擎有哪些區別?
MyISAM引擎:
1、不支持事務
不支持事務,但是整個操作是原子性的。
2、不支持外鍵
不支持外鍵,支持表鎖,每次所住的是整張表。
MyISAM的表鎖有讀鎖和寫鎖:
表共享讀鎖和表獨占寫鎖。在對MyISAM表進行讀操作時,不會阻塞其他用戶對同一張表的讀請求,但是會阻塞其他用戶對表的寫請求;對其進行寫操作時會阻塞對同一表讀操作和寫操作。
3、一個MyISAM表有三個文件
一個MyISAM表有三個文件:索引文件,表結構文件,數據文件。
4、采用非聚集索引
采用非聚集索引,索引文件的數據域存儲指向數據文件的指針。輔索引與主索引基本一致,但是輔索引不用保證唯一性。
Innodb引擎:
1、支持事務
支持事務,支持事務的四種隔離級別;是一種具有事務、回滾和崩潰修復能力的事務安全型表。
2、支持行鎖和外鍵約束
支持行鎖和外鍵約束,因此可以支持寫并發
3、一個Innodb表存儲在一個文件內
一個Innodb表存儲在一個文件內,也可能為多個,受操作系統文件大小的限制
4、主鍵索引采用聚集索引
主鍵索引采用聚集索引,輔索引的數據域存儲主鍵的值;因此從輔索引查找數據,需要先通過輔索引找到主鍵值,再訪問主鍵索引;最好使用自增主鍵,防止插入數據時,為維持B+樹結構,文件的大調整。
以上就是關于MySQL 存儲引擎有哪些以及他們的區別是什么的全部內容介紹,想了解更多關于MySQL 的信息,請繼續關注中培偉業。