1. 程式人生 > >mysql中的幾種存儲引擎

mysql中的幾種存儲引擎

要求 mvc str 適合 存儲結構 style image img ext

mysql常用的幾種存儲引擎

技術分享圖片

MyISAM:

(1)做很多count 的計算;

(2)插入不頻繁,查詢非常頻繁;

(3)沒有事務。


InnoDB:

InnoDB邏輯存儲結構:
所有表的數據被邏輯的存放在一個表空間裏。表空間又由段(segment)區(extent)頁(page)組成,
頁在一些文檔中也稱為塊。
表空間由各個段組成,數據段即為B+樹的葉節點,索引段即為B+樹的非索引節點(我理解的是B+樹中的非葉子節點)。
區由64個連續的頁組成,每個頁的大小16kb,每個區的大小1Mb。對於大的數據段,InnoDB存儲引擎最多可以申請4個區。

技術分享圖片

(1)可靠性要求比較高,或者要求事務;

(2)表更新和查詢都相當的頻繁,並且表鎖定的機會比較大的情況。


為什麽MyISAM會比Innodb 的查詢速度快?

INNODB在做SELECT的時候,要維護的東西比MYISAM引擎多很多;
1)數據塊,INNODB要緩存,MYISAM只緩存索引塊, 這中間還有換進換出的減少;
2)innodb尋址要映射到塊,再到行,MYISAM 記錄的直接是文件的OFFSET,定位比INNODB要快
3)INNODB還需要維護MVCC一致;雖然你的場景沒有,但他還是需要去檢查和維護
MVCC ( Multi-Version Concurrency Control )多版本並發控制


Archive:
高壓縮和快速插入的特點Archive非常適合作為日誌表的存儲引擎,但是前提是不經常對該表進行查詢操作。


MEMORY:所有的數據都在內存中,數據的處理速度快,但是安全性不高。如果需要很快的讀寫速度,對數據的安全性要求較低,可以選擇MEMOEY。
它對表的大小有要求,不能建立太大的表。所以,這類數據庫只使用在相對較小的數據庫表。

mysql中的幾種存儲引擎