mysql主要的存儲引擎

1.mysql常用存儲的對比(引用mysql數據庫開發優化與管理維護一書的表格)


特點 Myisam BDB Memory InnoDB NDB
存儲限制 沒有 沒有 64TB
事務安全   支持   支持  
鎖機制 表鎖 頁鎖 表鎖 行鎖 行鎖
B樹索引 支持 支持 支持 支持 支持
哈希索引     支持 支持 支持
全文索引 支持        
集羣索引       支持  
數據緩存     支持 支持 支持
索引緩存 支持   支持 支持 支持
數據可壓縮 支持        
空間使用 N/A
內存使用 中等
批量插入的速度
支持外鍵       支持  
2.1  MyISAM

MyISAM是Mysql默認的存儲引擎,MyISAM不支持事務,也不支持外鍵,優勢在於訪問速度快,對事物完整性沒有要求或者以SELECT INSERT爲主的應用基本採用這個引擎來建表。

MyISAM表是獨立於操作系統的,移植性比較強。每當我們建立一個MyISAM引擎的表時,就會在本地磁盤上建立三個文件,文件名就是表名。

1.tb_demo.frm,存儲表定義;
2.tb_demo.MYD,存儲數據;
3.tb_demo.MYI,存儲索引。

MyISAM存儲引擎特別適合在以下幾種情況下使用:

1.選擇密集型的表。MyISAM存儲引擎在篩選大量數據時非常迅速,這是它最突出的優點。
2.插入密集型的表。MyISAM的併發插入特性允許同時選擇和插入數據。例如:MyISAM存儲引擎很適合管理郵件或Web服務器日誌數據。

2.2 InnoDB

InnoDB存儲引擎提供了具有提交、回滾和崩潰恢復能力的事務安全。但是對比Myisam的存儲引擎,InnoDB寫的處理效率差一些並且會佔用更多的磁盤空間以保留數據和索引。

InnoDB主要使用環境:

1.用於事務處理應用程序,支持外鍵。

2.適用於對事務完整性要求高,在併發條件下要求數據的一致性。

3.數據操作主要包括插入 查詢 刪除 更新。

4.類似於計費和財務等系統對數據精準性要求比較高的系統。

2.3 MEMORY

使用MySQL Memory存儲引擎的出發點是速度。爲得到最快的響應時間,採用的邏輯存儲介質是系統內存。雖然在內存中存儲表數據確實會提供很高的性能,但當mysqld守護進程崩潰時,所有的Memory數據都會丟失。獲得速度的同時也帶來了一些缺陷。它要求存儲在Memory數據表裏的數據使用的是長度不變的格式,這意味着不能使用BLOB和TEXT這樣的長度可變的數據類型,VARCHAR是一種長度可變的類型,但因爲它在MySQL內部當做長度固定不變的CHAR類型,所以可以使用。

一般在以下幾種情況下使用Memory存儲引擎:

1.目標數據較小,而且被非常頻繁地訪問。在內存中存放數據,所以會造成內存的使用,可以通過參數max_heap_table_size控制Memory表的大小,設置此參數,就可以限制Memory表的最大大小。

2.如果數據是臨時的,而且要求必須立即可用,那麼就可以存放在內存表中。

3.存儲在Memory表中的數據如果突然丟失,不會對應用服務產生實質的負面影響。

2.4  MERGE

merge用於將一系列等同的MyISAM表以邏輯方式組合在一起,並作爲一個對象引用它們。merge表的優點在於可以突破對單個MyISAM表大小的限制,並且通過將不同的表分佈在多個磁盤上,可以有效的改善merge表的訪問效率。這對於數據倉儲的VLDB環境十分適合。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章