MySQL 支持非常多种存储引擎,我这先列举一些:
存储引擎 | 描述 |
ARCHIVE | 用于数据存档(行被插入后不能再修改) |
BLACKHOLE | 丢弃写操作,读操作会返回空内容 |
CSV | 在存储数据时,以逗号分隔各个数据项 |
FEDERATED | 用来访问远程表 |
InnoDB | 具备外键支持功能的事务存储引擎 |
MEMORY | 置于内存的表 |
MERGE | 用来管理多个MyISAM表构成的表集合 |
MyISAM | 主要的非事务处理存储引擎 |
NDB | MySQL集群专用存储引擎 |
1.8 关于存储引擎的一些操作
1.8.1 查看当前服务器程序支持的存储引擎
我们可以用下边这个命令来查看当前服务器程序支持的存储引擎:
show engines;
其中的 Support 列表示该存储引擎是否可用, DEFAULT 值代表是当前服务器程序的默认存储引擎。 Comment 列是对存储引擎的一个描述。Transactions 列代表该存储引擎是否支持事务处理。 XA 列代表着该存储引擎是否支持分布式事务。 Savepoints 代表着该列是否支持部分事务回滚。
1.8.2 设置表的存储引擎
存储引擎是负责对表中的数据进行提取和写入工作的,我们可以为不同的表设置不同的存储引擎,也就是说不同的表可以有不同的物理存储结构,不同的提取和写入方式。
1.8.2.1 创建表时指定存储引擎
我们之前创建表的语句都没有指定表的存储引擎,那就会使用默认的存储引擎 InnoDB。如果我们想显式的指定一下表的存储引擎,那可以这么写:
CREATE TABLE 表名(建表语句;) ENGINE = 存储引擎名称;
我们想创建一个存储引擎为 MyISAM 的表可以这么写:
mysql> CREATE TABLE engine_demo_table(-> i int -> ) ENGINE = MyISAM;
1.8.2.2 修改表的存储引擎
如果表已经建好了,我们也可以使用下边这个语句来修改表的存储引擎:
ALTER TABLE 表名 ENGINE = 存储引擎名称;
修改 engine_demo_table 表的存储引擎:
mysql> ALTER TABLE engine_demo_table ENGINE = InnoDB;
这时我们再查看一下 engine_demo_table 的表结构:
存储引擎就改成InnoDB了。