MySQL存储引擎
MyISAM存储引擎
- 默认MyISAM的表会在磁盘中产生3个文件
.frm——表结构文件
.MYD——数据文件
.MYI——索引文件
- 可以在创建表的时候指定数据文件和索引文件的存储位置,只有MyISAM表支持
DATA DIRECORY[=]数据保存的绝对路径
INDEX DIRECORY[=]索引文件保存的绝对路径
- MyISM单表最大支持的数据量为2的64次方条记录
- 每个表最多可以建立64个索引
- 如果是符合索引,每个符合 索引最多包含16个列,索引值最大长度是1000B
- MyISAM引擎的存储格式
定长(FIXED静态)——是指字段中不包含VARCHAR/TEXT/BLOB等变长字段,优势是运行 速度快,数据保存安全
动态(DYNAMIC)——字段中包含VARCHAR/TEXT/BLOB变长字段,优势是占用空间小
压缩(COMPRESSED)——myisampack创建
InnoDB存储引擎
- 设计遵循ACID模型,支持事务,具有从服务奔溃中恢复的能力,能够最大限度的保护用户的数据
原子性(Atomiocity)
一致性(Consistency)
隔离性(Isolation)
持久性(Durability)
- 支持行级锁,可以提升多用户并发时的读写性能
- 支持外键,保证数据的一致性和完整性
- InnoDB拥有自己独立的缓冲池,常用的数据和索引都在缓存中
- 对与INSERT、UPDATE、DELETE操作,InnoDB会使用一种change buffering的机制来 自动优化,还可以提供一致性的读,并且还能够缓存变更的数据,减少磁盘I/O,提高性能
- 创建InnoDB表之后会产生两个文件
.frm——表结构文件
.ibd——数据和索引存储表空间中
- 所有表都需要创建主键,最好是配合上AUTO_INCREMENT,也可以放到经常查询的列作为主键