MySQL—浅谈MySQL存储引擎

本文对比了MySQL中最常用的两种存储引擎MyISAM和InnoDB的特点。MyISAM适用于以读写为主的场景,而InnoDB则更适合对事务完整性要求较高的应用场景。

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

和大多数数据库不同,MySQL中有一个存储引擎的概念,对于不同的存储需求可以选择最优的存储引擎。如下是MySQL种常见的几种引擎以及其特性。

这里写图片描述

其中MyISAM和InnoDB是我们最最常用的两个存储引擎,下面主要将对比这两种引擎的特点,以及分析在不同的需求下如何选择合适的引擎。

MyISAM

MyISAM是MySQL默认的数据库引擎,它不支持事务、不支持外键,优点是访问速度比较快,因为使用表级锁所以不存在死锁(后面会讲),但是一个重要缺陷就是不能在表损坏后恢复数据。所以对于事务完整性要求或者以SELECT、INSERT为主要需求的应用,MyISAM是最好的选择。

每一个MyISAM在磁盘上存储为3个文件:

  • table_name.frm(表定义)
  • table_name.MYD(表数据)
  • table_name.MYI(表索引)

由于数据和索引可以存放在不同的目录,所以可以获得更快的速度(平均分布IO)。

InnoDB

InnoDB提供了具有提交、回滚和崩溃恢复能力的事务安全使用了行级锁,因此锁冲突较MyISAM小很多。但是InnoDB写的处理效率较差,并且占用更多的磁盘空间保留数据和索引。

  • 外键约束:MySQL支持外键约束的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对用的索引。
  • 存储方式:
    使用共享表空间:表结构在.frm中,数据在innodb_data_home_dir中,索引在innodb_data_file_path定义的表空间中。
    使用多表空间存储:表的表结构仍然在.frm中,但是每一个表的数据和索引分开放在.ibd中。

选择合适的存储引擎

  • MyISAM:默认的插件式引擎。如果应用是以读、写操作为主,更新和删除操作为辅,对事物的完整性和并发性要求不高,那么是非常合适的,如WEB、数据仓库等应用环境下。

  • InnoDB:用于事务处理应用程序,支持外键。如果应用对事务完整性有比较高的要求,并发条件下需要数据的一致性,除了数据的读、写以外还有大量的删除更新操作,那么InnoDB是更加合适的引擎。InnoDB有效降低删除和更新带来的锁定,还可以确保事务的完整提交和回滚。对于类似财务系统和计费系统,InnoDB是不二之选。

MySQL存储引擎是插件式的,其中最常用的两个存储引擎是MyISAM和InnoDB。MyISAM是MySQL中默认的存储引擎,它没有太多人关注的原因可能是因为它在一些方面的性能和功能上相对较弱。然而,决定使用哪个存储引擎是一个复杂的问题,而我们可以聚焦于MyISAM和InnoDB这两个最常见的存储引擎。 在这两个存储引擎中,InnoDB要求表必须有主键,因为它的数据文件本身按照主键聚集。而MyISAM可以没有主键。这是InnoDB与MyISAM之间的一个重要区别。 因此,当选择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存储引擎选择 InnoDB与MyISAM的优缺点分析](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、付费专栏及课程。

余额充值