一、InnoDB 引擎sql
MySQL 5.5 及之後版本中的默認存儲引擎,它的優勢以下:災難恢復性好,支持事務,使用行級鎖,支持外鍵關聯,支持熱備份。緩存
InnoDB引擎中的表,其數據的物理組織形式是簇表(Cluster Table),主鍵索引和數據是在一塊兒的,數據按主鍵的順序物理分佈。實現了緩衝管理,不只能緩衝索引也能緩衝數據,而且會自動建立散列索安全
引以加快數據的獲取。併發
二、MyISAM引擎性能
它的特性以下:不支持事務;使用表級鎖,併發性差;主機宕機後,MyISAM表易損壞,災難恢復性不佳;能夠配合鎖,實現操做系統下的複製備份、遷移;只緩存索引,數據的緩存是利用操做系統緩spa
衝區來實現的。可能引起過多的系統調用且效率不佳;數據緊湊存儲,所以可得到更小的索引和更快的全表掃描性能。操作系統
上面這兩個是最經常使用的Mysql引擎。它們二者的主要區別:InnoDB支持事務,MyISAM不支持;MyISAM適合查詢以及插入爲主的應用,InnoDB適合頻繁修改以及涉及到安全性較高的應用;InnoDB支持外鍵,索引
MyISAM不支持;清空整個表時,InnoDB是一行一行的刪除,效率很是慢。MyISAM則會重建表;InnoDB支持行鎖,MyISAM的全表鎖;InnoDB中不保存表的行數,如select count(*) from table時,InnoDB需事務
要掃描一遍整個表來計算有多少行,可是MyISAM只要簡單的讀出保存好的行數便可。注意的是,當count(*)語句包含where條件時MyISAM也須要掃描整個表。內存
總之:MyISAM類型不支持事務處理等高級處理,而InnoDB類型支持;MyISAM類型的表強調的是性能,其執行速度比InnoDB類型更快,可是不提供事務支持,而InnoDB提供事務支持已經外部鍵等高級數據
庫功能。
三、MEMORY 存儲引擎
提供內存表,也不支持事務和外鍵。顯著提升訪問數據的速度,可用於緩存會頻繁訪問的、能夠重構的數據、計算結果、統計值、中間結果。可是它使用表級鎖,雖然內存訪問快,但若是頻繁的讀寫,表
級鎖會成爲瓶頸;只支持固定大小的行;不支持TEXT、BLOB字段。當有些查詢須要使用到臨時表(使用的也是MEMORY存儲引擎)時,若是表中有TEXT、BLOB字段,那麼會轉換爲基於磁盤的MyISAM
表,嚴重下降性能。