InnoDB和MyISAM的联系和区别浅谈

本文对比了MySQL中MyISAM与InnoDB两种存储引擎的主要区别及相同点,并提供了选择建议。MyISAM不支持事务处理,适用于读取密集型应用;InnoDB支持事务和外键,提供行级锁定,适合于频繁读写的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0.数据库总体图片:

在这里插入图片描述

1.两者的差别

  • 1)InnoDB 支持事务,MyISAM 不支持,对于 InnoDB 每一条 SQL 语句都默认封装成事务进行提交,这样就会影响速度,优化速度的方式是将多条 SQL 语句放在 begin 和 commit 之间,组成一个事务;
  • 2)InnoDB 支持外键,而 MyISAM 不支持
  • 3)MyISAM 中 B+ 树的数据结构存储的内容是实际数据的地址值,它的索引和实际数据是分开的,只不过使用索引指向了实际数据。这种索引的模式被称为非聚集索引
  • 4)InnoDB 中 B+ 树的数据结构中存储的都是实际的数据,这种索引有被称为聚集索引
  • 5)InnoDB 最小的锁粒度是行锁,MyISAM 最小的锁粒度是表锁

2.相同点

  • 1)两种引擎所使用的索引的数据结构都是B+树
  • 2)

3.MyISAM

  • 1)数据结构
    在这里插入图片描述

  • 2)MyISAM 中索引检索的算法为首先按照 B+Tree 搜索算法搜索索引,如果指定的 Key 存在,则取出其 data 域的值,然后以 data 域的值为地址,读取相应数据记录。

4.InnoDB

  • 1)数据结构
    在这里插入图片描述

  • 2)补充
    由于 InnoDB 利用的数据库主键作为索引 Key,所以 InnoDB 数据表文件本身就是主索引,且因为 InnoDB 数据文件需要按照主键聚集,所以使用 InnoDB 作为数据引擎的表需要有个主键,如果没有显式指定的话 MySQL 会尝试自动选择一个可以唯一标识数据的列作为主键,如果无法找到,则会生成一个隐含字段作为主键,这个字段长度为6个字节,类型为长整形。

5.如何选择

  • 1.是否要支持事务,如果要请选择 InnoDB,如果不需要可以考虑 MyISAM;
  • 2.如果表中绝大多数都只是读查询,可以考虑 MyISAM,如果既有读写也挺频繁,请使用InnoDB。
  • 3.系统奔溃后,MyISAM恢复起来更困难,能否接受,不能接受就选 InnoDB;
MySQL的存储引擎是插件式的,其中最常用的两个存储引擎是MyISAMInnoDBMyISAMMySQL中默认的存储引擎,它没有太多人关注的原因可能是因为它在一些方面的性能功能上相对较弱。然而,决定使用哪个存储引擎是一个复杂的问题,而我们可以聚焦于MyISAMInnoDB这两个最常见的存储引擎。 在这两个存储引擎中,InnoDB要求必须有主键,因为它的数据文件本身按照主键聚集。而MyISAM可以没有主键。这是InnoDBMyISAM之间的一个重要区别。 因此,当选择MySQL的存储引擎时,我们需要考虑不同存储引擎的特性适用场景,以便根据需求选择最合适的存储引擎。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [浅谈MySQL存储引擎](https://blog.csdn.net/hanfeng529264/article/details/123352215)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [浅谈MySQL存储引擎选择 InnoDBMyISAM的优缺点分析](https://download.csdn.net/download/weixin_38655484/12834006)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值