一、引言

与其他DBMS一样,MySQL有一个具体管理和处理数据的内部引擎,当你使用CREATE TABLE语句的时候,该引擎创建表,在你使用SELECT语句或者进行其他数据库操作的时候,该引擎在内部处理你的请求。在多数时候,此引擎都隐藏在DBMS内,不需要过多地关注它。

但是MySQL与其他DBMS不一样,它具有多种引擎。它打包多个引擎,这些引擎都隐藏在MySQL服务器内,全都能执行CREATE TABLE和SELECT等命令。

二、MySQL常见的三种引擎

  • InnDB是一个可靠的事务处理引擎,但是它不支持全文搜索
  • MEMORY在功能等同于MyISAM,但由于数据存储在内存中,速度很快(特别适合用于创建临时表)
  • MyISAM是一个性能极高的引擎,它支持全文搜索,但不支持事务处理

三、引擎的使用

  1. 创建表时需指定引擎,可以使用ENGINE=语句,如果省略,则使用默认引擎(很可能是MyISAM)
  2. 引擎类型可以混用,一个数据库中不同表可以使用不同引擎
  3. 混用引擎类型有一个缺陷,外键不能跨引擎,即使用了一个引擎的表不能引用具有使用不同引擎的表的外键

Q.E.D.


愿你编码半生,归来仍是少年