# 存储引擎
# myisam
是mysql默认的存储引擎
- 不支持:事务、外键
- 优势:速度快、对事务完整性没有要求
- 表的数据存在磁盘 一一对应
- 存储格式:.frm(框架)和.MYD(数据)和.MYI(索引)三个
- 存储格式
静态表
:默认,每个字段固定长度,按宽度补足空格,访问时会去掉空格(开发的时候要特别注意)。优点:迅速易缓存。缺点:占用空间大动态表
:不定长,占用空间小,易产生碎片压缩表
:占磁盘空间小,每个记录单独压缩,访问开支也很小。由myisampack工具生成。
# innodb
具有提交、回滚和崩溃恢复能力的事务安全。
- 缺点:处理效率差点、占空间多
- 存储格式:.frm和.bd两个
- 特点
- 自动增长列:必须是索引
mysql> create table auto_incre_demo -> (i smallint not null auto_increment, name varchar(10),primary key(i)) -> engine = innodb; -- 插入数据 发现key插入后是自增的 mysql> insert into auto_incre_demo values(1,'1'),(0,'2'),(null,'3'); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from auto_incre_demo; +---+------+ | i | name | +---+------+ | 1 | 1 | | 2 | 2 | | 3 | 3 | +---+------+ 3 rows in set (0.00 sec)
- 外键约束(本人不喜外键,略)
- 存储方式
- 共享表空间存储
- 多表空间存储
# memory
使用存在于内存中的内容来创建表,每个memory表对应一个磁盘文件,格式是.fm
- 特点:快,但是一旦服务关闭,表中数据会丢失
- 创建索引时可以指定hash索引还是btree索引
# merge
是一组myisam表的组合,本身没有数据,对此类型的表的所有操作都是对内部myisam表进行的。删除时只是删除merge定义,对内部表无任何影响。