數據庫引擎是MySQL組件,可以處理SQL操作,例如從數據庫創建、讀取和更新數據。MySQL中有兩種類型的引擎:事務性和非事務性。
1、事務型數據庫:在這種類型中,如果數據庫不完整,我們可以回滾對數據庫的寫入操作。這些操作稱為事務。主要是,現代引擎是事務性的。
2、非事務數據庫:與事務數據庫不同,它們不提供回滾/提交。相反,我們需要手動編寫代碼來執行回滾操作。
在本文中,我們將了解InnoDB、MyISAM、MEMORY、MERGE、CSV和SEQUENCE引擎及其特性,以及它們的優缺點。
一、InnoDB:InnoDB是DBMS MySQL和MariaDB的存儲引擎。它是MySQL 5.5及更高版本的默認存儲引擎。它取代了MyISAM作為默認引擎。
特征:
1、它提供標準的符合ACID的事務功能,以及外鍵支持。Oracle建議將InnoDB用于表。
2、它支持多版本并發控制、崩潰恢復和回滾操作。由于行級鎖定,多用戶性能成為可能。
3、它也用于MariaDB服務器。為了維護數據的完整性和安全性,InnoDB支持外鍵約束。
4、InnoDB支持緩存數據和索引的緩沖區。
5、它提供了一種表鎖定方法,這意味著一次只有一個用戶可以更改表。
優點:
1、支持ACID(原子性、一致性、隔離性和持久性)屬性以保護用戶數據。
2、通過Oracle風格的高性能和一致讀取訪問多個用戶。
3、支持使用有助于一致更新、插入和刪除操作的外鍵。此外,它有助于維護數據庫表內容的完整性。
缺點:
1、不支持全文搜索。
2、如果性能是優先考慮的,那么它就不會被使用,因為它比MyISAM 慢。
3、外鍵關系的使用使其使用起來很復雜。
二、MyISAM:是MySQL DBMS 5.5之前版本的默認引擎。MyISAM是一個高速存儲和檢索的存儲引擎。它不支持交易。它很容易在系統之間復制,并且數據占用空間小。主要用于Web和數據倉庫。
特征:
1、MyISAM存儲在3個文件中:.frm–存儲表格式,.MYD–數據文件,.MYI–索引文件。
2、它支持三種存儲格式:固定、動態和壓縮。
3、最大密鑰長度為1000字節。
4、每個表的最大索引數和每個索引的列數分別為64和16。
優點:
1、MyISAM比其他引擎更簡單。
2、它比任何其他通用數據庫引擎都快,它還提供全文搜索
缺點:
1、它很容易導致表損壞。但是,我們可以使用REPAIR TABLE查詢來恢復它。
2、它不支持外鍵約束或事務。
三、CSV:用于在文本文件中存儲CSV格式。它總是被編譯到MySQL 服務器中。它重量輕,可以很容易地導入到電子表格程序中。
特征:
1、CSV表使用CSV格式。因此,它可用于數據交換,例如,使用電子表格。
2、即使MySQL服務器已關閉,也可以使用標準文件編輯器編輯數據
3、MySQL服務器海量數據的瞬時加載。
優點:
1、在創建CSV文件后,將創建圖元文件來存儲表的狀態和表中存在的行數。
2、數據使用通用分隔值格式存儲在文本文件中。
缺點:
1、CSV引擎不支持索引。
2、它不支持分區。
3、它必須在所有列上都具有NOT NULL屬性。
四、MERGE:使用MERGE引擎創建的表用于輕松處理大量數據。它是一組相同的MyISAM表,可以作為一個表使用。因此,它也被稱為 MRG_MyISAM引擎,它適用于數據倉庫環境。
特征:
1、它是在MySQL 3.23.25 版本中引入的。
2、UNION 和INSERT_METHOD是MERGE表的兩個獨特功能。
3、MERGE表沒有PRIMARY KEY或UNIQUE索引,因為它們不能對所有表強制執行唯一性。
優點:
1、它是一組相同的MyISAM表,可以用作一個表。記憶因此得以保存。
2、它可以對單個表執行最有效的修復,而不是修復通過合并這些單個表而形成的單個大表。
3、與MyISAM表不同,合并表不受操作系統文件大小的限制。
缺點:
1、只有相同的MyISAM表才能用于合并。
2、如果MERGE表是非臨時的,則合并表必須是非臨時的。如果 MERGE表是臨時的,MyISAM表可以是臨時表和非臨時表的混合。
3、某些MyISAM功能在MERGE表中不可用。
五、MEMORY:它被認為是通常用于在內存中創建臨時表(也稱為 HEAP)的最快引擎。因此,當數據庫重新啟動時,數據會丟失。它是非事務性的。它對于快速查找參考資料和其他識別數據很有用。它將所有數據存儲在RAM中以便更快地訪問,而不是將數據存儲在磁盤中。它廣泛用于表中數據的只讀緩存或臨時使用。
特征:
1、它不會在磁盤上創建任何文件。
2、MEMORY表不能包含BLOB或TEXT列。
3、支持AUTO_INCREMENT列。
4、VARCHAR使用固定長度存儲,即它使用固定長度的行存儲格式。
優點:
1、數據被加密,通過加密功能在服務器中實現。
2、支持B樹索引。
3、為客戶端之間的低爭用提供低級鎖定和多線程操作。
缺點:
1、MEMORY表不能分區。
2、如果從MEMORY表中刪除單個行,則無法回收內存。
六、SEQUENCE:它是用于創建具有給定初始值、結束值和增量值的正整數的升序或降序序列的事務引擎。它是只讀的并且支持XA。
特征:
與 MEMORY 數據庫引擎一樣,它不會在磁盤上創建任何文件。
它會在我們需要時自動創建虛擬表。無法顯式創建 SEQUENCE 表。
該引擎對連接和子查詢很有用。
優點:
1、SEQUENCE引擎未綁定到表。因此,我們也可以將它們用于任何其他目的。
2表格實施的靈活性。
缺點:
1、AUTO_INCREMENT 功能需要額外編程,默認情況下在引擎中不可用。
2、多個并行會話處于活動狀態時出現并發問題。
以上是MySQL數據庫引擎不同類型的介紹,希望能幫助到大家參考!
審核編輯:湯梓紅
-
SQL
+關注
關注
1文章
774瀏覽量
44250 -
數據庫
+關注
關注
7文章
3846瀏覽量
64685 -
MySQL
+關注
關注
1文章
829瀏覽量
26742
發布評論請先 登錄
相關推薦
評論