Mysql 基礎之 MyISAM 與 InnoDB 的區別

來源:互聯網
上載者:User

參考文章 : InnoDB還是MyISAM 再談MySQL儲存引擎的選擇   MySQL: InnoDB 還是 MyISAM?

 

MyISAM:這個是預設類型,它是基於傳統的ISAM類型,ISAM是Indexed Sequential Access Method (有索引的順序存取方法) 的縮寫,它是儲存記錄和檔案的標準方法.與其他儲存引擎比較,MyISAM具有檢查和修複表格的大多數工具. MyISAM表格可以被壓縮,而且它們支援全文檢索搜尋.它們不是事務安全的,而且也不支援外鍵。如果事物復原將造成不完全復原,不具有原子性。如果執行大量的SELECT,MyISAM是更好的選擇。

 

InnoDB:這種類型是事務安全的.它與BDB類型具有相同的特性,它們還支援外鍵.InnoDB表格速度很快.具有比BDB還豐富的特性, 因此如果需要一個事務安全的儲存引擎,建議使用它.如果你的資料執行大量的INSERT或UPDATE,出於效能方面的考慮,應該使用InnoDB表,

 

兩種類型最主要的差別就是Innodb 支援交易處理與外鍵和行級鎖.而MyISAM不支援.所以MyISAM往往就容易被人認為只適合在小項目中使用。

 

如何確定使用哪種類型:

下面先讓我們回答一些問題:

  • 你的資料庫有外鍵嗎?
  • 你需要事務支援嗎?
  • 你需要全文索引嗎?
  • 你經常使用什麼樣的查詢模式?
  • 你的資料有多大?

思考上面這些問題可以讓你找到合適的方向,但那並不是絕對的。如果你需要交易處理或是外鍵,那麼InnoDB 可能是比較好的方式。如果你需要全文索引,那麼通常來說 MyISAM是好的選擇,因為這是系統內建的,然而,我們其實並不會經常地去測試兩百萬行記錄。所以,就算是慢一點,我們可以通過使用Sphinx從InnoDB中獲得全文索引。

資料的大小,是一個影響你選擇什麼樣儲存引擎的重要因素,大尺寸的資料集趨向於選擇InnoDB方式,因為其支援交易處理和故障恢複。資料庫的在小決定了故障恢複的時間長短,InnoDB可以利用交易記錄進行資料恢複,這會比較快。而MyISAM可能會需要幾個小時甚至幾天來幹這些事,InnoDB只需要幾分鐘。

您操作資料庫表的習慣可能也會是一個對效能影響很大的因素。比如: COUNT() 在 MyISAM 表中會非常快,而在InnoDB 表下可能會很痛苦。而主鍵查詢則在InnoDB下會相當相當的快,但需要小心的是如果我們的主鍵太長了也會導致效能問題。大批的inserts 語句在MyISAM下會快一些,但是updates 在InnoDB 下會更快一些——尤其在並發量大的時候。

所以,到底你檢使用哪一個呢?根據經驗來看,如果是一些小型的應用或項目,那麼MyISAM 也許會更適合。當然,在大型的環境下使用MyISAM 也會有很大成功的時候,但卻不總是這樣的。如果你正在計劃使用一個超大資料量的項目,而且需要交易處理或外鍵支援,那麼你真的應該直接使用InnoDB方式。但需要記住InnoDB 的表需要更多的記憶體和儲存,轉換100GB 的MyISAM 表到InnoDB 表可能會讓你有非常壞的體驗。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.