当你创建一个新表,你可以通过在CREATE TABLE语句中加上ENGINE选项指定一个特殊目的的存储引擎。
-- ENGINE=INNODB not needed unless you have set a different default storage engine.
除非设置了不同的默认存储引起,否者可以省略ENGINE = INNODB语句。
CREATE TABLE t1 (i INT) ENGINE = INNODB;
-- Simple table definitions can be switched from one to another.
简单的表可以在不同存储引擎间转换。
CREATE TABLE t2 (i INT) ENGINE = CSV;
-- Some storage engines have their own specific clauses in
有些存储引擎自身具有特点的子句。
CREATE TABLE syntax.
CREATE TABLE t3 (i INT) ENGINE = MEMORY USING BTREE;
5.6的默认引擎是INNOBD,你可以在服务启动的时候加上
--default-storage-engine参数,或通过my.cnf文件中配置
default-storage-engine来指定默认的存储引擎。
也可以在当前会话下设置默认引擎
SET default_storage_engine=NDBCLUSTER;
MySQL5.6.3,通过
CREATE TEMPORARY TABLE创建的临时,可通过
default_tmp_storage_engine配置独立于永久表的存储引擎。该操作可以在数据库运行和启动时设置,而在该版本之前,由
default-storage-engine参数来设置临时表和永久表的存储引擎。
通过ALTER TABLE语句转换引擎
ALTER TABLE t ENGINE = InnoDB;
创建表的时候,如果尝试使用未编译或编译但未被激活的引擎,MySQL将使用默认引擎取代。比如。在主从同步的时候,主库使用innodb引擎到最大安全值,而从库使用其他引擎会带来稳定性和一致性的问题。
默认情况下,当CREATE TABLE和ALTER TABLE不能使用默认引擎时会产生一个警告,为了避免产生困惑,如果期望的引擎不可用,下意思习惯设置SQL模式为
NO_ENGINE_SUBSTITUTION,这样当上述情况发生时将直接报错。
对于新表,MySQL总是创建一个.frm文件保存表和列的定义,表索引和数据则被存放在一个或多个的其他文件中。对于存储引擎而言,服务创建的.frm文件是在引擎级别之上的。单独的引擎为表创建任何额外的文件进行管理,如果表名包括特殊字段,表文件的名称包含的这些字符的代码将在
Section 9.2.3, “Mapping of Identifiers to File Names”.中描述。
阅读(2018) | 评论(0) | 转发(0) |