# 存储引擎

# 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定义,对内部表无任何影响。

Last Updated: 2020/3/1 下午7:17:59