mysql常用儲存引擎簡介

2021-08-31 07:43:14 字數 1588 閱讀 5094

1.innodb 

從mysql 5.5版本開始,innodb是mysql預設的儲存引擎。innodb具有以下優點 

災難恢復性好 

支援事務,預設的事務隔離級別是可重複讀,其事務控制是通過多版本併發控制來實現的。 

使用行級鎖 

對於innodb引擎中的表, 其資料的物理組織形式是簇表(cluster table) , 資料按主鍵來組織, 也就是說主鍵索引和資料是在一起的, 資料按主鍵的順序物理分布。 資料表的另一種常見形式是非簇表, 其索引是有序的, 而資料是無序的。 

實現了緩衝管理, 不僅能緩衝索引也能緩衝資料, 並且會自動建立雜湊索引以加快資料的獲取。 相比之下, myisam只是快取了索引。 

支援外來鍵。 

支援熱備份 

2.myisam引擎 

可以配合鎖, 實現作業系統下的複製備份、 遷移。 

使用表級鎖, 併發性差。 

支援全文檢索(mysql inonodb在5.6以後也支援全文檢索) 。 

主機宕機後, myisam表易損壞, 災難恢復性不佳。 

無事務支援。 

只快取索引, 資料的快取是利用作業系統緩衝區來實現的。 可能引發過多的系統呼叫且效率不佳。 

資料緊湊儲存, 因此可獲得更小的索引和更快的全表掃瞄效能。 

3.memory引擎 

memory儲存引擎提供「記憶體」表, 也不支援事務、 外來鍵。 

使用記憶體表(記憶體引擎) 可以顯著提高訪問資料的速度, 可用於快取會頻繁訪問的、 可以重構的資料、 計算結果、 統計值、 中間結果, 但也有如下這些不足之處。 

使用的是表級鎖, 雖然記憶體訪問快, 但如果頻繁地讀寫, 表級鎖可能會成為瓶頸所在。 

只支援固定大小的行。 varchar型別的字段會儲存為固定長度的char型別, 浪費空間。 

不支援text、 blob欄位。 當有些查詢需要使用到臨時表(使用的也是memory儲存引擎) 時如果表中有text、 blob欄位, 那麼會轉化為基於磁碟的myisam表, 嚴重降低效能。 

由於記憶體資源成本昂貴, 一般不建議設定過大的記憶體表, 如果記憶體表滿了, 就會在mysql錯誤日誌裡發現類似「thetable『table_name』is full」這樣的錯誤, 可通過清除資料或調整記憶體表引數來避免報錯。 

伺服器重啟資料會丟失 

4.archive引擎 

archive儲存引擎是被設計用來儲存企業中的大量流水資料的儲存引擎。 archive引擎使用zlib無損資料壓縮, 讓資料都儲存在壓縮的存檔表中。 當資料被插入時, 它們被壓縮。 

它只支援insert和select, 支援自增鍵及其上的索引, 不支援其他索引。 它適合做日誌記錄、 使用者行為分析, 不需要update、 delete和索引的資料

mysql的儲存引擎有很多,我們在實際使用的過程需要按照自己的需求去選擇,選擇的時候需要考慮以下因素 

是否需要事務支援。 

是否為高併發, innodb實現了行鎖, 這方面的表現大大優於myisam。 

索引, 不同儲存引擎的索引實現不盡相同。 

是否需要外來鍵。 

高效緩衝資料, innodb緩衝資料而myisam只緩衝了索引。 

備份, 是否需要支援熱備份。

原文: 

mysql儲存引擎 mysql儲存引擎簡介

精品推薦 什麼是儲存引擎 mysql儲存引擎是資料庫如何儲存資料 怎樣建立索引以及如何查詢更新資料等技術的實現方法,資料通過使用不同的技術儲存在檔案中,使用不同的儲存機制 索引方式來提供不同的功能。在mysql這種關係型資料中心來說,資料是以表的方式來儲存的,因此,簡單點來說,儲存引擎就是儲存和操作...

MySQL 儲存引擎簡介

今天寫sql的時候偶然間看到示例在建立表的sql語句加了一段 engine myisam 一時好奇想看下這個 myisam 是什麼意思,於是在網上搜出了官方文件 mysql 5.1 參考手冊 中對mysql儲存引擎的簡介,摘抄如下 myisam 預設的mysql外掛程式式儲存引擎,它是在web 資料...

MySQL 儲存引擎簡介

今天寫sql的時候偶然間看到示例在建立表的sql語句加了一段 engine myisam 一時好奇想看下這個 myisam 是什麼意思,於是在網上搜出了官方文件 mysql 5.1 參考手冊 中對mysql儲存引擎的簡介,摘抄如下 myisam 預設的mysql外掛程式式儲存引擎,它是在web 資料...