這是mysql 5.5或更高版本的預設儲存引擎。它提供了事務安全(acid相容)表,支援外來鍵引用完整性約束。
它支援提交、回滾和緊急恢復功能來保護資料。它還支援行級鎖定。當在多使用者環境中使用時,它的「一致非鎖
定讀取」提高了效能。它將資料儲存在集群索引中,從而減少了基於主鍵的查詢的i/o。
支援事務安全(資料安全與恢復機制)
支援b+tree索引,基於btree的高效聚集簇索引
支援資料快取,
支援外來鍵
強大的維護團隊 google oracle facebok 等
索引空間的占用
非主鍵索引造成的二次回表查詢
條件查詢時,覆蓋索引命中條件較複雜
索引碎片問題
事務支援帶來的表死鎖問題
事務(讀寫)控制機制,造成效能的損失
查詢資料相對較快,不適合大量的select
該儲存引擎管理非事務性表,提供高速儲存和檢索,支援全文搜尋。
支援全文索引,查詢資料相對較快,適合大量的select
支援基於b+tree樹索引結構的非聚集簇索引
非事務場景myisam的效能更優,占用的儲存空間少
索引壓縮,能夠較好支援更大資料量的索引儲存
不支援事務、不具備aicd特性(原子性、一致性、分離性、永久性);
表級別鎖定形式(更新資料時鎖定整個表、這樣雖然可以讓鎖定的實現成本很小但是同時大大降低了其併發的效能);
非聚集索引,資料與索引分開儲存
只快取索引,不快取資料
不支援外來鍵約束、只支援全文檢索;
儲存結構:
對auto_increment的操作:
count 統計:myisam 記錄行數
提供記憶體中的表,以前稱為堆。它在ram中處理所有資料,以便比在磁碟上儲存資料更快地訪問。用於快速查詢引用和其他相同的資料。
支援全文索引 樹索引 hash索引
使用memory表(heap表),資料都儲存在記憶體中,不需要磁碟io,memory表結構重啟後會儲存但是會出現資料丟失
使用場景:
用於查詢或對映表(郵編洲名),不知道與redis的區別優劣
用於快取週期性聚合資料,(可以作為賬務處理中 臨時資料或較長時間資料的儲存)
用於儲存資料分析中的中間資料
memory使用的是表級鎖,併發效能低,不支援blob text型別
varchar型別會轉換成定長的char
將多個類似的myisam表分組為乙個表,可以處理非事務性表,預設情況下包括這些表。
merge是myisam表合併過來的虛表,
你可以使用此引擎建立表,但不能儲存或獲取資料。這樣做的目的是教開發人員如何編寫新的儲存引擎。
用於儲存大量資料,不支援索引。(適合日誌與資料採集儲存)
會對插入的行進行zlib資料壓縮,不支援索引需要全表掃瞄,壓縮儲存更少的磁碟io
在文字檔案中以逗號分隔值格式儲存資料。csv檔案作為mysql 資料庫的表,外部系統也可以直接讀取檔案表
可以作為資料交換
受要儲存的資料,但始終返回空。但是會記錄日誌,可以用於複製資料庫到備份庫
將資料儲存在遠端資料庫中。可作為遠端資料庫服務的**端
集群引擎
分布式 災備 高可用 ndb資料庫組合(mysql cluster)
還有很多第三方類的引擎
轉換表引擎 alter table tablename engine=innodb
mysql資料庫引擎 mysql資料庫引擎
資料庫引擎是用於儲存 處理和保護資料的核心服務。利用資料庫引擎可控制訪問許可權並快速處理事務,從而滿足企業內大多數需要處理大量資料的應用程式的要求。使用資料庫引擎建立用於聯機事務處理或聯機分析處理資料的關聯式資料庫。這包括建立用於儲存資料的表和用於檢視 管理和保護資料安全的資料庫物件 如索引 檢視和...
MySQL資料庫引擎
如果你是個賽車手並且按一下按鈕就能夠立即更換引擎而不需要把車開到車庫裡去換,那會是怎麼感覺呢?mysql資料庫為開發人員所做的就好像是按按鈕換引擎 它讓你選擇資料庫引擎,並給你一條簡單的途徑來切換它。mysql的自帶引擎肯定是夠用了,但是在有些情況下,其他的引擎可能要比手頭所用更適合完成任務。如果願...
mysql資料庫引擎
mysql資料庫引擎 資料庫引擎是在我們編譯安裝mysql的時候確定下來的。也就是說如果我們想換乙個資料庫引擎,也就要重新編譯mysql。我們也可以使用mysql和api來編譯我們自己的資料庫引擎,當然這個是建立在你對資料庫底層非常了解的地步。所以我們想要新增乙個新的資料庫引擎的時候,那麼就編譯吧。...