Mysql中兩種引擎的區別
阿新 • • 發佈:2019-01-10
mysql兩種引擎Innodb和MyIasm
Innodb提供了資料庫事務的支援,並實現了sql標準的四種隔離級別,該引擎還提供了航跡鎖和外來鍵約束,它的設計目標是處理大容量資料庫系統,它本身就是基於Mysql後臺的完 整資料庫系統,Mysql執行時INnodb會在記憶體中建立緩衝池,用於快取資料和索引,但是該引擎不支援FULLTEXT型別的索引,而且它沒有儲存表的行數,select count(*) from table時需要掃描全表,需要使用資料庫事務時,該引擎是首選,由於鎖的粒度更小,寫操作不會鎖定全表,所以在併發高時,使用Innodb引擎會提升效率,但是使用行級鎖也不 是絕對的,如果在執行sql語句時Mysql能確定掃描的範圍,InnoDb同樣會鎖全表。MyIASMysql是mysql預設的引擎,但是它沒有提供對事物的支援,也不支援行級鎖和外來鍵,因此當insert(插入)update(更新)資料時即寫操作需要鎖定整個表,效率會低一些,不過 和InnoDb不同,MyIASMysql中儲存了表的行數,select count(*) from table時只需要直接讀取儲存好的值,不需要進行全表掃描,如果表的度操作遠遠多於寫操作且不需要事務 的支援,那麼MyIASM也是很好的選擇。
主要區別:
1.MyIASM是非事務安全的,而InnoDb是事務安全的
2.MyiASM鎖的粒度是表級的,而InnoDB支援行級鎖3.MyIASM支援全文型別索引,而InnoDb不支援全文索引
4.MyIASM相對簡單,效率上優於InnoDb,小型應用可以考慮使用MyIASM
5.MyIASM表儲存成檔案形式,跨平臺使用更加方便
應用場景:
1.MyIASM管理非事務表,提供高速儲存和檢索以及全文搜尋能力,如果再應用中執行大量select(查詢)操作,應該選MyIASM
2.InnoDb用於事務處理,具有ACID事務支援等特性,如果在應用中執行大量的insert(插入)和update(更新)操作,應該選擇INnoDb