Chinaunix首页 | 论坛 | 博客
  • 博客访问: 31847
  • 博文数量: 9
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 82
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-02 00:25
文章分类
文章存档

2015年(1)

2013年(7)

2012年(1)

我的朋友

分类: Mysql/postgreSQL

2013-09-27 17:03:41

当你创建一个新表,你可以通过在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”.中描述。
阅读(2004) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~