目錄
InooDB引擎:
MyISAM引擎:
InooDB引擎與MyISAM存儲引擎的區別:
Archive引擎:
Blackhole引擎:
CSV引擎:
Memory引擎:
Federated引擎:
Merge引擎:
NDB引擎:
InooDB引擎:
具備外鍵支持功能的事務存儲引擎。
InooDB是MySQL的默認事務性引擎,被設計用來處理大量的短期(short-lived)事務。可以確保事務的完整提交(commit)和回滾(rollback)。除了增加和查詢外,還需要更新、刪除,優先選擇InooDB存儲引擎。支持行級鎖,操作時只鎖某一行,不對其他行有影響,適合高并發的操作。
InooDB讀寫操作的處理效率差一些,對內存要求較高。
MyISAM引擎:
主要的非事務處理存儲引擎。提供了大量的特性,包括全文索引、壓縮、空間函數等。訪問速度快,對事物完整性沒有要求或者以SELECT、INSERT為主的應用。針對數據統計有額外的常數存儲,所以COUNT(*)查詢效率很高。只讀應用或者以讀為主的,優先選擇MyISAM存儲引擎。
不支持事務、行級鎖、外鍵,崩潰后無法安全恢復。表鎖,即使操作一條記錄也會鎖住整個表,不適合高并發的操作。
InooDB引擎與MyISAM存儲引擎的區別:
InooDB提供了良好的事務管理、崩潰修復能力和并發控制。因為InooDB支持事務,所以對于要求事務完整性的場合需選擇InooDB。缺點是讀寫效率稍差,占用的數據空間相對比較大。
MyISAM提供了大量的特性,但是不支持事務、外鍵,崩潰后無法安全恢復。以讀操作和插入操作為主,只有很少的更新、刪除操作,并且對事物的要求沒那么高,就可以選擇MyISAM存儲引擎。優點是占用空間小,處理速度快。缺點是不支持事物的完整性和并發性。
對比MyISAM的存儲引擎,InooDB寫的處理效率差一些,并且會占用更多的磁盤空間以保存數據和索引。
MyISAM只緩存索引,不緩存真實數據,InooDB不僅緩存索引還要緩存真實數據,對內存的要求較高,而且內存大小對性能有決定性的影響。
Archive引擎:
用于數據存檔。僅支持插入和查詢兩種功能(行被插入后不能再修改)。
MySQL5.5以后支持索引功能。
擁有很好的壓縮機制,使用zlib庫,在記錄請求時實時的進行壓縮,經常被用來作為倉庫使用。
創建ARCHINE表時,存儲引擎會創建名稱以表名開頭的文件。數據文件的擴展名為.ARZ。
同樣的數據量下,比MyISAM表要小大約75%,比InnoDB表小大約83%。
采用了行級鎖。該ARCHIVE引擎支持auto_increment列屬性,auto_increment列可以具有唯一索引或者非唯一索引。在其他列創建索引會導致錯誤。
適合日志和數據采集應用,適合存儲大量的獨立的作為歷史記錄的數據,擁有很高的插入速度,但是對查詢的支持較差。
Blackhole引擎:
丟棄寫操作,讀操作會返回空內容。
Blackhole引擎沒有實現任何存儲機制,會丟棄所有插入的數據,不做任何保存。但是服務器會記錄Blackhole表的日志,所以可以用于賦值數據到備庫,或者簡單地記錄到日志,但是有很多問題。
CSV引擎:
存儲數據時,以逗號分隔各個數據項。
CSV引擎可以將普通的CSV文件作為MySQL的表來處理,但不支持索引。可以作為一種數據交換的機制。存儲的數據直接可以在操作系統里,用文本編譯器,或者excel讀取。對于數據的快速導入、導出是有明顯優勢的。
創建CSV表時,服務器會創建一個純文本數據文件,其名稱以表名開頭并帶有.CSV擴展名,將數據存儲到表中時,存儲引擎將其以逗號分隔值格式保存到數據文件中。
Memory引擎:
Memory采用的邏輯時內存,響應速度快,但是當進程崩潰時數據會丟失。要求存儲的數據是數據長度不變的格式。
Memory同時支持哈希索引和B+數索引。至少比MyISAM表要快一個數量級。表的大小是受到限制的,主要取決于兩個參數,分別是max_rows和max_heap_table_size。
數據文件與索引文件分開存儲。每個基于Memory存儲引擎的表實際對應一個磁盤文件,文件名與表明相同,類型為frm類型,該文件中只存儲表的結構,數據文件都是存儲在內存中的。有利于數據的快速處理,提高整個表的處理效率。
缺點是:數據易丟失,生命周期短。
適用場景:
目標數據比較小,而且頻繁的進行訪問。在內存中存放數據,如果太大會造成內存溢出,可以控制max_heap_table_size控制Memory表的大小。如果數據是臨時的,必須立即可用得到,那么可以放在內存中。存儲的數據突然間丟失也沒有太大關系。
Federated引擎:
訪問遠程表。
Federated引擎是訪問其他的MySQL服務器的一個代理,提供了一種很好的跨服務器的靈活性,但是有很多問題。因此默認是禁用的。
Merge引擎:
管理多個MyISAM表構成的表集合。
NDB引擎:
MySQL集群專用存儲引擎。
NDB引擎主要用于MySQL Cluster分布式集群環境。