(二)MySQL 存储引擎

欢迎访问

1. MySQL ⽀持哪些存储引擎?默认使⽤哪个?

MyISAM 和 InnoDB,默认InnoDB

2.MyISAM 和 InnoDB 有什么区别?

  1. 事务支持

    • InnoDB 支持事务,具有 ACID(原子性、一致性、隔离性、持久性)特性,这使得它更适合于需要高度数据完整性的应用程序,如金融系统;
    • MyISAM 不支持事务,因此不适合需要事务支持的应用。它更适用于读操作频繁,写操作较少的应用,如博客系统。
  2. 行级锁定和表级锁定

    • InnoDB 使用行级锁定,这意味着它可以更好地处理并发操作,允许多个事务同时操作同一表中的不同行;
    • MyISAM 使用表级锁定,这意味着在进行写操作时会锁定整个表,这可能会导致并发性能下降,尤其在有大量写操作时。
  3. 崩溃恢复和数据完整性

    • InnoDB 具有崩溃恢复功能,可以在数据库崩溃后自动恢复数据,并保持数据库的一致性;
    • MyISAM 对于崩溃恢复的支持相对较弱,可能需要手动修复或者恢复数据。
  4. 外键约束

    • InnoDB 支持外键约束,可以保证数据的完整性,例如,可以在表之间建立关联关系,并确保关联的数据的一致性;
    • MyISAM 不支持外键约束,因此需要在应用层面来保证数据的完整性,这可能会增加开发的复杂性。
  5. 全文索引

    • MyISAM 支持全文索引,这使得在文本搜索方面效率更高;
    • InnoDB 从 MySQL 5.6 开始也支持全文索引,但 MyISAM 仍然在这方面表现更好。
  6. 索引储存

    • MyISAM 使用堆表,堆表中,主键索引和普通索引一样的,叶子节点存放的是指向堆表中数据的指针(可以是一个页编号加偏移量),指向物理地址;
    • InnoDB 使用索引组织表,对于主键的索引,页子节点存放了一整行所有数据,其他索引称为二级索引,它的页子节点只是存放了键值和主键值。

总结:

  • MyISAM 使用堆表存储,可以没有索引,主键索引和普通索引一样,叶子节点都存储的都是数据的物理地址。支持表锁,不支持事务和外键约束;

  • InnoDB 使用索引组织表储存,默认行号建立主键索引,数据在叶子节点上。普通索引上面存储的是自己的键值和主键索引,所以查询需要回表。行锁表锁,支持事务和外键约束。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值