mysql資料庫InnoDB和MyISAM區別以及如何選擇

來源:互聯網
上載者:User

標籤:sql   class   nod   inno   http   優勢   授權   使用   select   

 

mysql資料庫InnoDB和MyISAM區別以及如何選擇:

區別:

1. InnoDB支援事務,MyISAM不支援,對於InnoDB每一條SQL語言都預設封裝成事務,自動認可,這樣會影響速度,所以最好把多條SQL語言放在begin和commit之間,組成一個事務;

2. InnoDB支援外鍵,而MyISAM不支援。對一個包含外鍵的InnoDB錶轉為MYISAM會失敗;

3. InnoDB是叢集索引,資料檔案是和索引綁在一起的,必須要有主鍵,通過主鍵索引效率很高。但是輔助索引需要兩次查詢,先查詢到主鍵,然後再通過主鍵查詢到資料。因此,主鍵不應該過大,因為主鍵太大,其他索引也都會很大。而MyISAM是非叢集索引,資料檔案是分離的,索引儲存的是資料檔案的指標。主鍵索引和輔助索引是獨立的。

4. InnoDB不儲存表的具體行數,執行select count(*) from table時需要全表掃描。而MyISAM用一個變數儲存了整個表的行數,執行上述語句時只需要讀出該變數即可,速度很快;

5. Innodb不支援全文索引,而MyISAM支援全文索引,查詢效率上MyISAM要高;

 

如何選擇:

1. 是否要支援事務,如果要請選擇innodb,如果不需要可以考慮MyISAM;

2. 如果表中絕大多數都只是讀查詢,可以考慮MyISAM,如果既有讀寫也挺頻繁,請使用InnoDB。

3. 系統奔潰後,MyISAM恢複起來更困難,能否接受;

4. MySQL5.5版本開始Innodb已經成為Mysql的預設引擎(之前是MyISAM),說明其優勢是有目共睹的,如果你不知道用什麼,那就用InnoDB,至少不會差。

Oscarwin
連結:https://www.zhihu.com/question/20596402/answer/211492971
來源:知乎
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。

 

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.