您当前的位置: 首页 >  学无止境 >  文章详情

Mysql 引擎 InnoDB、MyISAM,这两种存储引擎的区别

时间: 2023-11-08 【学无止境】 阅读量:共218人围观

简介 如果需要支持事务、外键约束和并发访问,以及更好的崩溃恢复和故障转移能力,建议使用 InnoDB 引擎。如果只是进行简单的数据存储和查询,并且需要更快的性能,可以考虑使用 MyISAM 引擎。但需要注意的是,MySQL 5.5 版本之后默认的存储引擎是 InnoDB,因此在选择存储引擎时需要考虑到版本的兼容性。

InnoDB、MyISAM 区别

  • InnoDB 支持事务,而 MyISAM 不支持事务。
  • InnoDB 支持行级锁定,而 MyISAM 支持表级锁定。在并发访问的情况下,InnoDB 的性能更好。
  • InnoDB 支持外键约束,而 MyISAM 不支持外键约束。
  • InnoDB 支持崩溃恢复和故障转移,而 MyISAM 不支持。
  • InnoDB 支持自动增量列,而 MyISAM 也支持自动增量列。

InnoDB 存储引擎采用 B+ 树作为索引结构,支持主键、唯一键、普通索引等多种索引类型。同时,它还支持外键约束、自动增长列、全文索引等高级特性,可以满足各种复杂应用场景的需求。

B+ 树具有以下几个优点

  • 减少磁盘 I/O 次数:B+ 树的非叶子节点不存储数据,只存储索引信息,因此可以存储更多的索引信息,减少磁盘 I/O 次数。
  • 提高查询效率:B+ 树的叶子节点形成一个有序链表,可以快速进行范围查询和排序操作。
  • 支持高并发:B+ 树的节点通常比较小,可以存储在内存中,减少锁冲突和等待时间。

MyISAM 存储引擎采用 B 树作为索引结构,支持主键、唯一键、普通索引等多种索引类型。同时,它还支持表级锁,即在写入数据时会锁定整个表,因此在高并发场景下可能会出现锁等待和死锁问题。

InnoDB 和 MyISAM 在存储文件上的差异

  • 文件扩展名:InnoDB 存储引擎的表文件扩展名为 .ibd,而 MyISAM 存储引擎的表文件扩展名为 .MYD 和 .MYI。
  • 存储结构:InnoDB 存储引擎的表文件包含数据文件和索引文件,而 MyISAM 存储引擎的表文件包含数据文件和索引文件,但是索引文件分为 .MYI 和 .MYD 两个文件,其中 .MYI 文件存储索引信息,.MYD 文件存储数据信息。
  • 表空间:InnoDB 存储引擎的表空间文件包括系统表空间文件和用户表空间文件,而 MyISAM 存储引擎的表空间文件只包括数据文件和索引文件。
  • 锁机制:InnoDB 存储引擎支持行级锁和事务,而 MyISAM 存储引擎只支持表级锁,因此在高并发场景下,InnoDB 存储引擎的性能要优于 MyISAM 存储引擎。
文章评论
总共 0 条评论
这篇文章还没有收到评论,赶紧来抢沙发吧~
Copyright (C) 2023- 小祥驿站 保留所有权利 蜀ICP备 17034318号-2  公安备案号 50010302004554