MySQL兩種引擎的比較

MyISAM,InnoDB主要區別:mysql

  1.MyISAM是非事物安全的,InnoDB是事物安全的。sql

    事物安全的特色爲更安全,遇到問題會自動恢復或從備份加事物日誌回覆,若是更新失敗,你的全部改變都變回原來。數據庫

    非事物安全的優勢爲更快,所需的磁盤空間更小,執行更新時須要的內存更小,可是全部發生的改變都是永久的。安全

  2.MyISAM鎖的粒度是表級的,InnoDB支持行級鎖以及表級,默認狀況下是採用行級鎖。併發

    數據庫引擎具備多粒度鎖定,容許一個事務鎖定不一樣類型的資源。 爲了儘可能減小鎖定的開銷,數據庫引擎自動將資源鎖定在適合任務的級別。 鎖定在較小的粒度(例如行)能夠提升併發度,但開銷較高,由於若是鎖定了許多行,則須要持有更多的鎖。 鎖定在較大的粒度(例如表)會下降了併發度,由於鎖定整個表限制了其餘事務對錶中任意部分的訪問。 但其開銷較低,由於須要維護的鎖較少。高併發

  3.MyISAM支持全文類型索引,InnoDB不支持(以前mysql索引

    mysql索引有四種類型:主鍵索引、惟一索引、普通索引和全文索引。經過給字段添加索引能夠提升數據的讀取速度,提升項目的併發能力和抗壓能力。索引優化是mysql中的一種優化方式。索引的做用至關於圖書的目錄,能夠根據目錄中的頁碼快速找到所需的內容。優化

    主鍵索引: 主鍵是一種惟一性索引,但它必須指定爲PRIMARY KEY,每一個表只能有一個主鍵。spa

    惟一索引: 索引列的全部值都只能出現一次,即必須惟一,值能夠爲空。日誌

    普通索引 : 基本的索引類型,值能夠爲空,沒有惟一性的限制。 

    全文索引: 全文索引的索引類型爲FULLTEXT。全文索引能夠在varchar、char、text類型的列上建立。能夠經過ALTER TABLE或CREATE INDEX命令建立。對於大規模的數據集,經過ALTER TABLE(或者CREATE INDEX)命令建立全文索引要比把記錄插入帶有全文索引的空表更快。MyISAM支持全文索引,InnoDB在mysql5.6以後支持了全文索引。

  4.InnoDB支持外鍵,MyISAM不支持。

應用場景(簡單歸納):

  MyISAM管理非事物表,提供高速存儲和檢索以及全文搜索的能力,若是在應用中執行大量的select操做,應選用MyISAM。

  InnoDB用於事物處理,具備ACID(原子性,一致性,隔離性,持久性)事物支持等特性,若是在應用中大量使用insert和update操做,應選用InnoDB。

  固然具體的選用仍是要看具體的項目需求來定,不能簡單的只看這幾個方面。

相關文章
相關標籤/搜索