MySQL数据库教程:存储引擎详解


如何查看存储引擎?

使用如下命令查看系统中所有的存储引擎:

SHOW ENGINES;

如下图所示:

可以看出来当前数据库系统中有九种存储引擎,默认是InnoDB。这里我们介绍其中两种常用的引擎InnoDB和MyISAM。

如何选择存储引擎

引擎特点介绍:

不同存储引擎有不同的特点以适应不同的需求。

InnoDB

InnoDB是事务型数据库的首选引擎,通过上图我们可以看到InnoDB是MYSQL的默认事务型引擎。可以说InnoDB是目前MySQL最重要、使用最为广泛的存储引擎。它支持事务安全表(ACID),支持行锁定和外键等功能。

InnoDB主要特性有:

  • 支持事务
  • 支持行级锁和表级锁,能支持更多的并发量
  • mysql5.6版本开始支持 全文索引
  • 查询不加锁,完全不影响查询
  • 支持外键
  • 采用聚集索引

MyISAM

MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事物。

MyISAM主要特性有:

  • MyISAM是mysql5.1及之前版本的默认引擎,很久未被更新。
  • MyISAM 不支持事务,
  • 使用表级锁,在数据量大时表现较差。
  • 支持全文索引,采用的是非聚集索引
  • 支持查询缓存
  • 不支持外键

更多存储引擎介绍详见《mysql引擎有哪些》。

在不同的情况下如何选择:

  • 如果要求实现并发控制,InnoDB是个很好的选择。
  • 如果要支持事务,选择 InnoDB,MyISAM 不支持事务。这是 MySQL 将默认存储引擎从 MyISAM 变成 InnoDB 的重要原因之一。
  • 如果数据表绝大多数都只是读查询,主要用来查询记录,则MyISAM引擎能提供较高的处理效率。
  • 如果需要较低的恢复难度,选择InnoDB。系统奔溃后,MyISAM恢复起来更困难。
  • 当内存和存储空间有限时,选择MyISAM。InnoDB需要更多的内存和存储,而MyISAM可以使用压缩表,极大的减少磁盘的空间占用。

使用哪一种引擎要根据根据实际情况选择,一个数据库中不同的表可以使用不同引擎以满足各种性能和实际需求。使用合适的存储引擎,将会提高整个数据库的性能。

注意事项:

MySQL支持多种存储引擎,每一个表都可以指定一个不同的存储引擎。

外键约束(FOREIGN KEY)不能跨引擎使用。外键约束是用来保证数据的参照完整性,如果表之间需要关联外键,而不同的表指定了不同的存储引擎,则这些表之间不能创建外键约束。

更多MySQL存储引擎内容请看视频教


评论区(0)

评论