Heim  >  Fragen und Antworten  >  Hauptteil

php - MySQL 存储引擎

mysql 5.6以后,innodb和myisam 哪个查询数据更快。能不能给个证明。

高洛峰高洛峰2699 Tage vor710

Antworte allen(4)Ich werde antworten

  • 漂亮男人

    漂亮男人2017-05-16 13:07:44

    亲测(MySQL 版本 5.7.18),分别对 60W、1W 条记录进行测试
    有索引情况 MyISAM 比 Innodb 查询快,相差微小
    无索引情况 MyISAM 比 Innodb 查询快,查询速度相差在 1 倍左右

    Antwort
    0
  • ringa_lee

    ringa_lee2017-05-16 13:07:44

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

    全文搜索支持,且MySQL版本小于5.5 ==> MyISAM

    其他情况,请使用innodb

    题外话:
    大部分人都很懒,包括我,估计没有多少“雷锋”会花时间去给你证明一个网上有很多结论的东西。
    你应该自己搜索一下相关的话题,我相信你能找出一大堆别人做过的比较。如果你对那些结论还是持怀疑态度,可以自己动手去研究,毕竟网上别人做过的比较有可能是比较老的mysql版本。你可以自己搞一个benchmark测试,如果你问怎么搞出一个有说服力的benchmark,或许才是一个更好的问题。

    Antwort
    0
  • 習慣沉默

    習慣沉默2017-05-16 13:07:44

    并不能直接了当的说哪个更快,更需要根据业务逻辑来看,不过值得一提的是在网上有一个误区,很多人都认为查询起来myisam一定要比innodb快,的确,当我们在对整个表不加以任何条件进行查询统计时,myisam的确要快一些,这是因为myisam在插入数据的时候会更新表的数据,当我们查询的时候,直接走的统计数量
    但是,一旦当我们给sql语句加入条件时,innodb并不一定会比myisam慢,因为此时都是走的磁盘索引,即使是面对第一种情况,我们也可以用一个总数跟进表来统计总数,所以,一般没有特殊情况的话,建议InnoDB.

    Antwort
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-16 13:07:44

    但分析两个引擎情况下,MYISAM要比INNODB快,因为INNODB在做SELECT的时候,要维护的东西比MYISAM引擎多很多:
    1.INNODB,INNODB要缓存,MYISAM只缓存索引块,这中间还有换进换出的减少。
    2.INNODB寻址要映射到块,再到行,MYISAM记录的直接是文件的OFFSET,定位比INNODB要快。
    3.INNODB还需要维护MVCC一致;虽然你的场景没有,但他还是需要去检查和维护MVCC(Multi-Version Concurrency Control)多版本并发控制

    Antwort
    0
  • StornierenAntwort