一、表类型选择
1.存储引擎概述
(1) 存储引擎
- MylSAM:5.5以前的默认存储引擎
- InnoDB:5.5以后的默认存储引擎 (事务安全表)
- BDB:(事务安全表)
- MEMORY
- MERGE
- EXAMPLE
- NDB Cluster
- ARCHIVE
- CSV
- BLACKHOLE
- FEDERATED
特点 | MylSAM | InnoDB | MEMORY | MERGE | NDB |
---|---|---|---|---|---|
存储限制 | 有 | 64TB | 有 | 无 | 有 |
事务安全 | 支持 | ||||
锁机制 | 表锁 | 行锁 | 表锁 | 表锁 | 行锁 |
B树索引 | 支持 | 支持 | 支持 | 支持 | 支持 |
哈希索引 | 支持 | ||||
全文索引 | 支持 | ||||
集群索引 | 支持 | ||||
数据缓存 | 支持 | ||||
索引缓存 | 支持 | 支持 | 支持 | 支持 | 支持 |
数据可压缩 | 支持 | ||||
空间使用 | 低 | 高 | N/A | 低 | 低 |
内存使用 | 低 | 高 | 中等 | 低 | 高 |
批量插入的速度 | 高 | 低 | 高 | 高 | 高 |
支持外键 | 支持 |
常用存储引擎对比
(2)简单命令
- 查看当前默认存储引擎:show variables like 'table_type'
- 查询当前数据库支持的存储引擎:show engines/show variables like 'have%'
- 设置表的存储引擎:ENGINE = MylSAM / alter table tablename engine = innodb;
2、各种存储引擎的特性
(1)MylSAM
- 不支持事务和外键,访问速度快
- frm文件:存储表定义,MYD存储数据,MYI存储索引
- 支持静态表、动态表、压缩表:静态表是以固定宽度存储数据,以空格的形式补充长度,如果保存内容带空格,会被过滤掉;动态表占用空间少,但是容易产生碎片。
(2)InnoDB
- 自动增长列:插入为空时值是自动增长后的值
- 外键约束:创建索引的四个外键操作设置:RESTRICT、CASCADE、SET NULL和NO ACTION;RESTRICT和NO ACTION子