• InnoDB行锁和表锁都支持
    • MyISAM只支持表锁

    链接:https://www.nowcoder.com/questionTerminal/d5739672e78c498885ba2a540ab53500
    来源:牛客网

    Myisam和InnoDB的区别

    • myisam:性能极佳,但是不支持事务和行级锁,崩溃后无法安全恢复
      • 所以:去读操作频繁且不在乎崩溃后是否能恢复
    • innodb:(事务性数据库引擎),大多数情况下使用的引擎,不支持全文索引
      • 所以:要求事务和行级锁,要求全文索引时使用
    • InnoDB行锁和表锁都支持
    • MyISAM只支持表锁

    InnoDB只有通过索引条件检索数据才使用行级锁,否则,InnoDB将使用表锁

    • 也就是说,InnoDB的行锁是基于索引的
    • Innodb支持事务,MyIsAM不支持
    • InnoDB支持外键,而MyISAM不支持
    • InnoDB是聚集索引,MyISAM使用的是非聚集索引
    • InnoDB 不保存表的具体行数,MyISAM 用一个变量保存了整个表的行数
    • InnoDB 最小的锁粒度是行锁,MyISAM 最小的锁粒度是表锁。

    MyISAM读得快是因为直接映射到offset,而innodb还要先映射到块,再映射到行。