# 16.1 设置存储引擎
创建新表时,可以通过添加引擎
表选项创建表
陈述:
-- ENGINE=INNODB not needed unless you have set a different
-- default storage engine.
CREATE TABLE t1 (i INT) ENGINE = INNODB;
-- Simple table definitions can be switched from one to another.
CREATE TABLE t2 (i INT) ENGINE = CSV;
CREATE TABLE t3 (i INT) ENGINE = MEMORY;
当你省略引擎
选项,使用默认存储引擎。默认引擎是InnoDB
在 MySQL 8.0 中。您可以使用--默认存储引擎
服务器启动选项,或通过设置默认存储引擎
中的选项我的.cnf
配置文件。
您可以通过设置当前会话的默认存储引擎default_storage_engine
多变的:
SET default_storage_engine=NDBCLUSTER;
存储引擎暂时的
创建的表创建临时表
可以通过设置default_tmp_storage_engine
,无论是在启动时还是在运行时。
要将表从一个存储引擎转换为另一个,请使用更改表
表示新引擎的语句:
ALTER TABLE t ENGINE = InnoDB;
看第 13.1.20 节,“CREATE TABLE 语句”, 和第 13.1.9 节,“ALTER TABLE 语句”.
如果您尝试使用未编译或已编译但停用的存储引擎,MySQL 会使用默认存储引擎创建表。例如,在复制设置中,也许您的源服务器使用InnoDB
表以获得最大的安全性,但副本服务器使用其他存储引擎以牺牲持久性或并发性来提高速度。
默认情况下,每当创建表
要么更改表
无法使用默认存储引擎。为防止在所需引擎不可用时出现令人困惑的意外行为,请启用NO_ENGINE_SUBSTITUTION
SQL 模式。如果所需的引擎不可用,则此设置会产生错误而不是警告,并且不会创建或更改表。看第 5.1.11 节,“服务器 SQL 模式”.
MySQL 可能会将表的索引和数据存储在一个或多个其他文件中,具体取决于存储引擎。表和列定义存储在 MySQL 数据字典中。各个存储引擎创建它们管理的表所需的任何附加文件。如果表名包含特殊字符,则表文件的名称包含这些字符的编码版本,如第 9.2.4 节,“标识符到文件名的映射”.