php - MySQL 儲存引擎
高洛峰
高洛峰 2017-05-16 13:05:44
0
4
739

mysql 5.6以後,innodb和myisam 哪個查詢資料比較快。能不能給個證明。

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(4)
漂亮男人

親測(MySQL 版本 5.7.18),分別對 60W、1W 筆記錄進行測試
有索引情況 MyISAM 比 Innodb 查詢快,相差微小
無索引情況 MyISAM 比 Innodb 查詢快,查詢速度相差在 1 倍左右

無索引情況 MyISAM 比 Innodb 查詢快,查詢速度相差在 1 倍左右🎜
左手右手慢动作

大量的查詢,而很少修改(insert update delete) ==> MyISAM

全文搜尋支持,且MySQL版本小於5.5 ==> MyISAM

其他情況,請使用innodb

題外話:
大部分人都很懶,包括我,估計沒有多少「雷鋒」會花時間去給你證明一個網路上有很多結論的東西。
你應該自己搜尋一下相關的話題,我相信你能找出一大堆別人做過的比較。如果你對那些結論還是持懷疑態度,可以自己動手去研究,畢竟網路上別人做過的比較有可能是比較老的mysql版本。你可以自己搞benchmark測試,如果你問怎麼搞出一個有說服力的benchmark,或許才是一個更好的問題。

習慣沉默

並不能直接了當的說哪個更快,更需要根據業務邏輯來看,不過值得一提的是在網上有一個誤區,很多人都認為查詢起來myisam一定要比innodb快,的确,当我们在对整个表不加以任何条件进行查询统计时,myisam的确要快一些,这是因为myisam在插入数据的时候会更新表的数据,当我们查询的时候,直接走的统计数量
但是,一旦当我们给sql语句加入条件时,innodb并不一定会比myisam慢,因为此时都是走的磁盘索引,即使是面对第一种情况,我们也可以用一个总数跟进表来统计总数,所以,一般没有特殊情况的话,建议InnoDB.

淡淡烟草味

但分析兩個引擎情況下,MYISAM要比INNODB快,因為INNODB在做SELECT的時候,要維護的東西比MYISAM引擎多很多:
1.INNODB,INNODB要緩存,MYISAM只緩存索引塊,這中間還有換進換出的減少。
2.INNODB尋址要映射到區塊,再到行,MYISAM記錄的直接是檔案的OFFSET,定位比INNODB快。
3.INNODB也需要維護MVCC一致;雖然你的場景沒有,但他還是需要去檢查和維護MVCC(Multi-Version Concurrency Control)多版本並發控制

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!