五大引擎
一:
MyISAM:在創建MyISAM的時候會出來三個默認的文件
1.tb_demo.frm,存儲表定義;
2.tb_demo.MYD,存儲數據;
3.tb_demo.MYI,存儲索引。
因為MyISAM表有無法處理事務,所以它只適合在一下幾種情況下使用
1.選擇密集型的表。MyISAM存儲引擎在篩選大量數據時非常迅速,這是它最突出的優點。
2.插入密集型的表。MyISAM的並發插入特性允許同時選擇和插入數據。例如:MyISAM存儲引擎很適合管理郵件或Web服務器日志數據。
二:
InnoDB:在mysql5.6版本以上被作為默認引擎,並且加入了行及鎖定與外鍵約束。
所以以下是使用InnoDB最好的選擇:
1. 更新密集的表。InnoDB存儲引擎特別適合處理多重並發的更新請求。
2.事務。InnoDB存儲引擎是支持事務的標准MySQL存儲引擎。
3.自動災難恢復。與其它存儲引擎不同,InnoDB表能夠自動從災難中恢復。
4.外鍵約束。MySQL支持外鍵的存儲引擎只有InnoDB。
5.支持自動增加列AUTO_INCREMENT屬性。
三:
MEMORY:使用MEMORY引擎主要是因為速度,好處就在MEMORY采用的邏輯存儲是系統內存,極大的提高了儲存數據表的性能;
壞處就是當mysqld守護進程崩潰時,所有的Memory數據都會丟失。
要求存儲在Memory數據表里的數據使用的是長度不變的格式,這意味着不能使用BLOB和TEXT這樣的長度可變的數據類型
所以一般在以下幾種情況下使用Memory存儲引擎:
1.目標數據較小,而且被非常頻繁地訪問。在內存中存放數據,所以會造成內存的使用,可以通過參數max_heap_table_size控制Memory表的大小,設置此參數,就可以限制Memory表的最大大小。
2.如果數據是臨時的,而且必須立即使用,那么就可以存放在內存表中。
3.存儲在Memory表中的數據如果突然丟失,不會對應用服務產生實質的負面影響。
Memory同時支持散列索引和B樹索引。B樹索引的優於散列索引的是,可以使用部分查詢和通配查詢,也可以使用<、>和>=等操作符方便數據挖掘。散列索引進行“相等比較”非常快,但是對“范圍比較”的速度就慢多了,因此散列索引值適合使用在=和<>的操作符中,不適合在<或>操作符中,也同樣不適合用在order by子句中
四:
MERGE:MERGE存儲引擎是一組MyISAM表的組合,這些MyISAM表結構必須完全相同,所以就相當於一個集合器。比起其他儲存引擎MERGE不是很優秀,但是在某些情況下MERGE還是非常的有用。對於服務器日志這種信息,一般常用的存儲策略是將數據分成很多表,每個名稱與特定的時間端相關。
五:
ARCHIVE:
Archive是歸檔的意思,在歸檔之后很多的高級功能就不再支持了,僅僅支持最基本的插入和查詢兩種功能。在MySQL 5.5版以前,Archive是不支持索引,但是在MySQL 5.5以后的版本就開始支持索引了。Archive擁有很好的壓縮機制,它使用zlib壓縮庫,在記錄被請求時會實時壓縮,所以它經常被用來當做倉庫使用。