mysql中存在兩種引擎:myisam和innodb。
其中myisam是mysql預設的引擎,它不支援事物操作,而且也不支援行級鎖及外來鍵。因此,當寫操作較多時(如insert或者update),由於鎖定了整個表,所以效率會低一些。myisam中儲存了表的行數,當進行select count(*) from table時不需要全表掃瞄,只需要直接讀取即可。
和myisam不同的是,innodb提供了資料庫事物的支援,並且提供了行級鎖和外來鍵約束。mysql執行時innodb會在記憶體中建立索引池,用於緩衝資料和索引。不過innodb不支援全文索引,啟動速度較慢,並且不儲存表的行數。innodb在併發下效率較高。
以下是關於二者的比較
對比項myisam
innodb
事物不支援
支援主外來鍵
不支援支援
行表鎖表鎖
行鎖快取
只快取索引,不快取真實資料
不僅快取索引,還快取真實資料
表空間小
大全文索引
支援不支援
關注點效能
事物應用場景
管理非事物表,提供高速儲存和檢索以及全文搜尋的能力,有大量的select操作
事物處理,有大量的insert和update操作,併發下
mysql的兩種引擎 mysql的兩種儲存引擎
背景 最近在使用spring data jpa操作mysql,在使用jpa的自動建表功能之後,處理多對多關係 manytomany的時候,spring data jpa會給中間表的兩個欄位都加上外來鍵引用。當前使用的版本預設的資料庫儲存引擎為myisam。這種儲存引擎是為資料庫查詢效能而生的,不支援...
mysql執行引擎 Mysql兩種引擎
innodb引擎 innodb引擎提供了對資料庫acid事務的支援,並且實現了sql標準的四種隔離級別。該引擎還提供了行級鎖和外來鍵約束,它的設計目標是處理大容量資料庫系統,它本身其實就是基於mysql後台的完整資料庫系統,mysql執行時innodb會在記憶體中建立緩衝池,用於緩衝資料和索引。但是...
MySQL兩種引擎的區別
innodb引擎提供了對資料庫acid事務的支援,並且實現了sql標準的四種隔離級別。該引擎還提供了行級鎖和外來鍵約束,它的設計目標是處理大容量資料庫系統,它本身其實就是基於mysql後台的完整資料庫系統,mysql執行時innodb會在記憶體中建立緩衝池,用於緩衝資料和索引。但是該引擎不支援ful...