美文网首页
InnoDB 和MyISAM的区别

InnoDB 和MyISAM的区别

作者: 十年磨一剑1111 | 来源:发表于2020-01-11 15:14 被阅读0次

使用MySQL 数据库的小伙伴们想必在面试的时候经常会被问到Innodb和MyISAM 这两种存储引擎的区别,因为这两种存储引擎是我们经常使用的,接下来我将针对一些比较常用的问题做下总结:

  1. 如果你的业务数据一直性要求比较高,建表的时候你会选择使用哪种存储引擎?
    答:InnoDB

这个问题相信绝大多数人都会回答正确,因为我们知道InnoDB支持事务而MyISAM不支持事务

  1. InnoDB为什么支持事务?
    答:是通过日志(log) 和锁来实现的。

这个问题估计一半的人都不太了解吧,我们知道事务有4个属性:原子性,一致性,隔离性,持久性 ,也就是我们经常说的ACID,其中 ACD 是通过日志(log)来实现,隔离性是通过锁来实现的,具体的实现方式请关注后续文章。

3.如果业务数据量比较大,你会选择使用哪种存储引擎,为什么?
答:InnoDb,我们知道InnoDB 默认支持行锁,而MyISAM不支持行锁的,InnoDB 锁粒度更小,能支持更大的并发量,当然,锁的粒度越小意味着开销也是越大的,而MyISAM 只支持表锁,也就是如果有个写(insert,update) 操作的时候就会锁住整个表,这会导致其他的都和写操作阻塞,如果并发量大的话就会造成严重的阻塞,因此,实践总结:当我们业务数据量大的时候我们选择InnoDB引擎,当我们的表主要以查询为主时我们选用MyISAM。

4.如果一张表没有设置主键会怎样?
答:一般我们会为每张表设置一个自增主键,如果表使用的时MyISAM存储引擎,没有设置主键影响不大,如果表的InnoDB存储引擎则会影响性能,因为InnoDB 在没有主键或者一个唯一的索引的时候会以一个包含行ID值的合成列生成一个隐藏的聚簇索引,长度为6字节,这个生成的列是共享的,也就是所有没有主键的表都共享这个聚簇索引,可想而知是会影响性能的。

相关文章

  • mysql

    常见的储存引擎 InnoDB MyISAM MyISAM和InnoDB的区别 ①InnoDB支持事务,MyISAM...

  • 数据库引擎

    MyISAM和InnoDB区别

  • 常见面试题

    MyISAM和InnoDB的区别 MyISAM不支持事务,而InnoDB支持事务的。 MyISAM锁的粒度是表级,...

  • 文章总结(6)—数据库

    InnoDB和MyISAM存储引擎的区别 InnoDB使用的是行锁,MyISAM使用的是表锁; InnoDB支持事...

  • MySQL 篇 --- 2021-08-31

    MyISAM 和 InnoDB 的区别 MyISAM 查询效率更高,但是不支持事物 InnoDB 插入、更新较高,...

  • Innodb和MyIsam的区别

    Innodb和MyIsam的区别 (1)对事务的⽀持不同MyIsam不⽀持事务,⽽InnoDB⽀持事务。(2)锁的...

  • 数据库常见问题

    MyISAM和InnoDB 主要区别: 1).[事务]MyISAM是非事务安全型的,而InnoDB是事务安全型的,...

  • MySQL学习日记(十一)-技术问答

    一、MySQL主要存储引擎MyISAM和InnoDB的区别? 1、 存储结构 MyISAM:每个MyISAM在磁盘...

  • mysql的引擎、innodb/Myisam 的区别

    四种引擎:Memory、MYISAM、DBD、InnoDB、Archive MyISAM与InnoDB的区别MyI...

  • mysql(七)

    MySQL存储引擎-innodb 查看存储引擎 innodb和myisam的物理区别 innodb 核心特性 MV...

网友评论

      本文标题:InnoDB 和MyISAM的区别

      本文链接:https://www.haomeiwen.com/subject/paavactx.html