MySql效能調優(六)InnoDB引擎和Myisam引擎的效能對比

來源:互聯網
上載者:User

標籤:mysql效能調優六   innodb引擎和myisam引擎的效能   

      對於這兩種儲存引擎的選擇,要根據項目的應用特點來權衡,而對於複雜的應用系統,也可以根據實際情況來選擇多種儲存引擎的組合。不過這種方法不建議採取。

     MyISAM支援全文索引,這是一種基於分詞建立的索引,支援一些比較複雜的查詢,但不是事務安全的,而且不支援外鍵。每張MyISAM表存放在3個檔案中:frm檔案存放表格定義;資料檔案是MYD;索引檔案是MYI;對於MyISAM表,可以手工或者自動執行檢查或修複操作。

       InnoDB是事務型引擎,支援復原,具有崩潰恢複能力,多版本並發控制,支援ACID事務、支援行級鎖定(InnoDB的行級鎖不是絕對的,如果一個SQL語句沒有使用到索引,那麼InnoDB會鎖全表)。

      InnoDB的工作原理:就是把資料撈帶記憶體當中,被使用者讀寫,這樣大大增加了效能。當資料全部載入到記憶體當中時,這時的效能是最好的,它的設計理論是充分利用記憶體,減少磁碟I/O使用率。

MyISAM和InnoDB的區別有以下幾點:

1.MyISAM是非事務安全型的,而InnoDB是事務安全型的,也就是ACID事務支援。

2.MyISAM鎖是表級鎖,鎖開銷小,而InnoDB支援行級鎖定,鎖管理開銷大,支援更好的並發寫操作。

3.在最新的版本中,兩者都已經支援全文索引。

4.MyISAM相對簡單,管理方便,因此在效率上優先於InnoDB,小型應用可以考慮使用。

5.MyISAM表是儲存成檔案的形式,在跨平台的資料轉移中使用其儲存會省去不少的麻煩。

6.InnoDB表比MyISAM表更安全,可以保證在資料不丟失的情況下切換非事務表到事務表。

總結:

     MyISAM儲存引擎的讀鎖和寫鎖是互斥的,讀寫操作時串列的。當一個進程請求某個MyISAM表的讀鎖,同時另一個進程也請求通一表的寫鎖,MySQL是寫進程先獲得鎖,不僅如此,即使讀請求先到鎖等待隊列,寫請求後到,寫鎖也會插到讀鎖請求之前,這是因為MySQL會認為寫請求一般要比讀請求重要,這也是MyISAM表不太適合有大量更新操作和查詢操作應用的原因,因為大量的更新操作會造成查詢操作很難忽地讀鎖,從而可能永遠阻塞。

    InnoDB用於交易處理應用程式,具有眾多特性,包括支援ACID事務、行鎖等。如果應用中需要執行大量的讀寫操作,則應使用InnoDB,這樣可以提高多使用者並行作業的效能,所以要盡量優先使用InnoDB引擎。

 

 

 

 

MySql效能調優(六)InnoDB引擎和Myisam引擎的效能對比

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.