MySQL存储引擎InnoDB,MyISAM
MySQL存儲引擎InnoDB,MyISAM
1、區別:
(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不支持。
2、如何選擇存儲引擎
(1)是否要支持事務,如果要請選擇innodb,如果不需要可以考慮MyISAM;
(2)如果表中絕大多數都只是讀查詢,可以考慮MyISAM,如果既有讀寫也挺頻繁,請使用InnoDB;
(3)系統奔潰后,MyISAM恢復起來更困難,能否接受;
(4)數據量較大(3TB以上)時不要用MyISAM,崩潰后難以恢復。
InnoDB:數據完整性,并發性處理,擅長更新,刪除。
MyISAM:高速查詢及插入。擅長插入和查詢。
轉載于:https://www.cnblogs.com/xidian2014/p/8591877.html
總結
以上是生活随笔為你收集整理的MySQL存储引擎InnoDB,MyISAM的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 十天学Linux内核之第七天---电源开
- 下一篇: JAVA vo pojo j