幾個常用存儲引擎的特點
下面我們重點介紹幾種常用的存儲引擎並對比各個存儲引擎之間的區別和推薦使用方式。
特點 | Myisam | BDB | Memory | InnoDB | Archive |
---|---|---|---|---|---|
存儲限制 | 沒有 | 沒有 | 有 | 64TB | 沒有 |
事務安全 | 支持 | 支持 | |||
鎖機制 | 表鎖 | 頁鎖 | 表鎖 | 行鎖 | 行鎖 |
B樹索引 | 支持 | 支持 | 支持 | 支持 | |
哈希索引 | 支持 | 支持 | |||
全文索引 | 支持 | ||||
集羣索引 | 支持 | ||||
數據緩存 | 支持 | 支持 | |||
索引緩存 | 支持 | 支持 | 支持 | ||
數據可壓縮 | 支持 | 支持 | |||
空間使用 | 低 | 低 | N/A | 高 | 非常低 |
內存使用 | 低 | 低 | 中等 | 高 | 低 |
批量插入的速度 | 高 | 高 | 高 | 低 | 非常高 |
支持外鍵 | 支持 |
最常使用的2種存儲引擎:
Myisam是Mysql的默認存儲引擎。當create創建新表時,未指定新表的存儲引擎時,默認使用Myisam。每個MyISAM在磁盤上存儲成三個文件。文件名都和表名相同,擴展名分別是.frm(存儲表定義)、.MYD (MYData,存儲數據)、.MYI (MYIndex,存儲索引)。數據文件和索引文件可以放置在不同的目錄,平均分佈io,獲得更快的速度。
InnoDB存儲引擎提供了具有提交、回滾和崩潰恢復能力的事務安全。但是對比Myisam的存儲引擎,InnoDB寫的處理效率差一些並且會佔用更多的磁盤空間以保留數據和索引。
如何選擇合適的存儲引擎
選擇標準:根據應用特點選擇合適的存儲引擎,對於複雜的應用系統可以根據實際情況選擇多種存儲引擎進行組合。
下面是常用存儲引擎的適用環境:
MyISAM:默認的MySQL插件式存儲引擎,它是在Web、數據倉儲和其他應用環境下最常使用的存儲引擎之一
InnoDB:用於事務處理應用程序,具有衆多特性,包括ACID事務支持。
Memory:將所有數據保存在RAM中,在需要快速查找引用和其他類似數據的環境下,可提供極快的訪問。
Merge:允許MySQL DBA或開發人員將一系列等同的MyISAM表以邏輯方式組合在一起,並作爲1個對象引用它們。對於諸如數據倉儲等VLDB環境十分適合。