標籤: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區別以及如何選擇