MySQL ⽀持哪些存储引擎?默认使⽤哪个?MyISAM 和 InnoDB 引擎有什么区别,如何选择?

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL ⽀持哪些存储引擎?默认使⽤哪个?MyISAM 和 InnoDB 引擎有什么区别,如何选择?

🌊MySQL存储引擎比较(官方)

   💧MySQL 支持多种存储引擎,包括 InnoDB、MyISAM、MEMORY、CSV 等。默认情况下,MySQL 使用的存储引擎是 InnoDB。

   💧MyISAM 和 InnoDB 是 MySQL 中最常用的两种存储引擎,它们有以下区别:

  1. 锁定方式不同:MyISAM 使用表级锁定,而 InnoDB 使用行级锁定。在并发访问时,InnoDB 的锁定方式更加精细,可以避免锁定整个表,提高了并发性能。
  2. 数据完整性不同:MyISAM 不支持事务和外键约束,而 InnoDB 支持事务和外键约束,可以保证数据的完整性和一致性。
  3. 读写性能不同:MyISAM 的读写性能相对较高,适合于读密集型应用;而 InnoDB 的写性能相对较高,适合于写密集型应用。
  4. 空间利用率不同:MyISAM 不支持行级别的存储,存储空间利用率较低;而 InnoDB 支持行级别的存储,存储空间利用率更高。

   💧在选择 MyISAM 和 InnoDB 引擎时,需要考虑应用场景和需求:

  1. 如果应用主要是读操作,可以考虑选择 MyISAM 引擎,以提高读取性能。
  2. 如果应用主要是写操作或需要支持事务和外键约束,可以考虑选择 InnoDB 引擎,以保证数据的完整性和一致性。
  3. 如果需要高性能和高可用性,可以考虑选择使用 MySQL 集群或使用多个副本实例,并将数据分布在不同的节点上。

   💧总结:MySQL 支持多种存储引擎,MyISAM 和 InnoDB 是其中最常用的两种,它们有不同的特点和优缺点,在选择时需要根据应用场景和需求进行考虑和权衡。


🌊通俗讲解(版本一)

MySQL支持哪些存储引擎?

   💧MySQL 支持多种存储引擎,默认为 InnoDB。其中最常用的是 InnoDB 和 MyISAM,它们有以下区别:

  1. 事务支持:InnoDB 支持事务操作,而 MyISAM 不支持事务。
  2. 外键支持:InnoDB 支持外键,而 MyISAM 不支持外键。
  3. 锁定方式:InnoDB 支持行级锁和表级锁,而 MyISAM 只支持表级锁。
  4. 数据库崩溃恢复:InnoDB 支持数据库异常崩溃后的安全恢复(redo log),而 MyISAM 不支持。
  5. 性能比较:InnoDB 的性能较强,无论在读写混合模式下还是只读模式下,随着 CPU 核数的增加,InnoDB 的读写能力呈线性增长。而 MyISAM 因为读写不能并发,处理能力与核数无关。
  6. 索引实现方式:InnoDB 和 MyISAM 都使用 B+ 树来实现索引,但实现方式不同。

如何选择存储引擎?

在读密集的情况下,如果不需要事务支持,也不需要保证数据库的崩溃恢复,可以选择 MyISAM。在其他情况下,可以放心使用 InnoDB。

   💧《MySQL 高性能》一书中有这样的描述:

“不要轻易相信‘MyISAM 比 InnoDB 快’之类的经验之谈,这个结论往往不是绝对的。在很多我们已知场景中,InnoDB 的速度都可以让 MyISAM 望尘莫及,尤其是使用了聚簇索引,或者需要访问的数据都可以放入内存的应用。”


🌊通俗讲解(版本二)

   💧MySQL ⽀持多种存储引擎,每种存储引擎都有各⾃的优缺点。常⽤的存储引擎有 InnoDB、MyISAM、Memory、Merge、Archive、CSV、BLACKHOLE。其中,InnoDB 是 MySQL 默认的存储引擎。可以使⽤命令 SHOW ENGINES 查看当前数据库⽀持的存储引擎。

SHOW ENGINES
• 1

MySQL支持的存储引擎的详细介绍:

  1. InnoDB:MySQL默认的存储引擎,支持事务、行级锁机制和外键约束。适合处理大量数据和高并发的应用场景,但对于频繁的全表扫描和大量的写操作,性能可能不如MyISAM。
  2. MyISAM:MySQL最早提供的存储引擎,不支持事务、行级锁机制和外键约束。但对于只读或者大量的查询操作,性能比InnoDB更好。
  3. Memory:这种类型的数据表只存在于内存中,使用散列索引,数据的存取速度非常快。由于存在于内存中,因此这种类型常应用于临时表中。
  4. Merge:将多个相同的MyISAM表合并为一个虚表,常应用于日志和数据仓库。
  5. Archive:适用于对于只偶尔需要查询的历史数据进行存储,将数据进行压缩存储,占用空间小,但不支持索引和更新操作。
  6. CSV:将数据以CSV格式存储,适合用于导入和导出数据。
  7. BLACKHOLE:这种存储引擎不实际存储数据,所有写入的数据都会被丢弃,但可以记录数据的写入日志。

   💧可以通过CREATE TABLE语句创建表时指定使用的存储引擎,例如:

CREATE TABLE table_name (column1 datatype, column2 datatype, ...) ENGINE = engine_name;

   💧以上是MySQL支持的存储引擎的介绍。根据不同的需求和应用场景,可以选择适合的存储引擎来优化数据库性能和功能。

CREATE TABLE mytable (id INT, name VARCHAR(20)) ENGINE=InnoDB;

   💧使⽤ SHOW CREATE TABLE 语句可以查看表的创建语句,其中包含了使⽤的存储引擎。例如:

SHOW CREATE TABLE mytable;

   💧输出结果中包含了 ENGINE=InnoDB。

存储引擎选择

   💧 InnoDBMyISAM是两种常见的存储引擎,它们之间有以下区别。选择存储引擎取决于应用程序的需求和特点:

  1. 事务支持:InnoDB支持事务处理,可以使用ACID(原子性、一致性、隔离性、持久性)来保证数据的完整性和一致性。而MyISAM不支持事务处理,不能保证数据的一致性。如果需要使用事务,应选择InnoDB。
  2. 锁机制:InnoDB采用行级锁定,只锁定需要修改的行,提高并发性能。而MyISAM采用表级锁定,会锁定整个表,如果多个用户同时访问一个表,就会出现互相等待的情况,降低并发性能。如果需要高并发性能,应选择InnoDB。
  3. 外键约束:InnoDB支持外键约束,可以通过外键约束实现关联查询和级联删除等功能。而MyISAM不支持外键约束。如果需要使用外键约束,应选择InnoDB。
  4. 性能:MyISAM在读取数据方面的性能表现较好,在大量读取的情况下效率更高。而InnoDB在处理事务和大量并发查询的情况下性能更好。选择存储引擎时需要根据应用程序的读写比例和并发性能的需求来选择。
  5. 其他特性:MyISAM支持全文搜索索引,而InnoDB不支持。MyISAM的表可以被压缩,而InnoDB的表不支持压缩。

   💧因此,在选择存储引擎时,需要根据应用程序的需求和特点进行选择。如果需要支持事务和外键约束,以及并发性能比较重要,应选择InnoDB。如果需要读取数据的性能比较重要,可以选择MyISAM。如果需要全文搜索索引或表压缩,应选择MyISAM

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6天前
|
存储 关系型数据库 MySQL
MySQL引擎InnoDB和MyISAM的区别?
InnoDB是MySQL默认的事务型存储引擎,支持事务、行级锁、MVCC、在线热备份等特性,主索引为聚簇索引,适用于高并发、高可靠性的场景。MyISAM设计简单,支持压缩表、空间索引,但不支持事务和行级锁,适合读多写少、不要求事务的场景。
29 9
|
25天前
|
存储 安全 关系型数据库
InnoDB引擎特性
InnoDB事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键。MySQL5.5.5之后,InnoDB作为默认存储引擎,InnoDB主要特性有: InnoDB给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句中提供了一个类似Oracle的非锁定读。 InnoDB是为处理巨大数据量的最大性能设计。它的CPU效率可能是任何其他基于磁盘关系的数据库引擎所不能匹敌的。 InnoDB存储引擎完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池
|
27天前
|
存储 缓存 关系型数据库
【赵渝强老师】MySQL的MyISAM存储引擎
在MySQL5.1版本之前,默认存储引擎为MyISAM。MyISAM管理非事务表,提供高速存储和检索,支持全文搜索。其特点包括不支持事务、表级锁定、读写互阻、仅缓存索引等。适用于读多、写少且对一致性要求不高的场景。示例代码展示了MyISAM存储引擎的基本操作。
|
27天前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL的InnoDB存储引擎
InnoDB是MySQL的默认存储引擎,广泛应用于互联网公司。它支持事务、行级锁、外键和高效处理大量数据。InnoDB的主要特性包括解决不可重复读和幻读问题、高并发度、B+树索引等。其存储结构分为逻辑和物理两部分,内存结构类似Oracle的SGA和PGA,线程结构包括主线程、I/O线程和其他辅助线程。
【赵渝强老师】MySQL的InnoDB存储引擎
|
1月前
|
存储 关系型数据库 MySQL
数据库引擎之InnoDB存储引擎
【10月更文挑战第29天】InnoDB存储引擎以其强大的事务处理能力、高效的索引结构、灵活的锁机制和良好的性能优化特性,成为了MySQL中最受欢迎的存储引擎之一。在实际应用中,根据具体的业务需求和性能要求,合理地使用和优化InnoDB存储引擎,可以有效地提高数据库系统的性能和可靠性。
43 5
|
2月前
|
存储 缓存 关系型数据库
详细解析MySQL中的innodb和myisam
总之,InnoDB和MyISAM各有千秋,选择合适的存储引擎应基于对应用程序特性的深入理解,以及对性能、数据完整性和可扩展性的综合考量。随着技术发展,InnoDB因其全面的功能和日益优化的性能,逐渐成为更广泛场景下的首选。然而,在特定条件下,MyISAM依然保留其独特的价值。
149 0
|
3月前
|
存储 SQL 缓存
InnoDB 存储引擎以及三种日志
InnoDB 存储引擎以及三种日志
30 0
|
6天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
26天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
34 1
|
28天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
39 4