1. 程式人生 > >Mysql中兩種引擎的區別

Mysql中兩種引擎的區別

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