MySQL之存储引擎
MySQL体系结构
- 连接层
- 处理客户端连接;认证与授权
- 服务层
- SQL接口
- 解析器
- 查询优化器
- 缓存
- 引擎层
- 可插拔的存储引擎
- 存储层
- Redo
- Undo
- Data
- Index
- Binary
- Error等
存储引擎
存储引擎是存储数据,建立索引,更新/查询数据等技术的实现方式。
存储引擎基于表,而不是库,所以存储引擎也被称为表类型的。
1 | -- 展示当前数据库支持的存储引擎 |
在建表语句末尾可加上engine=xxx
来使用指定的存储引擎
存储引擎特点
InnoDB
- DML遵循ACID,支持事务
- 行级锁
- 支持外键
- 每个表对应一个xxx.ibd文件,用
innodb_file_per_table
控制,默认为ON
可以用ibd2sdi
工具来从ibd文件提取出sdi表结构数据
逻辑存储结构
- TableSpace
- Segment
- Extent
- Page
- Row
应用场景:要求事务完整性,并发条件下要求数据的一致性,数据操作包括增删改查
MyISAM
- 不支持事务,不支持外键
- 支持表锁,不支持行锁
- 访问速度快
文件:
- sdi 存储表结构消息
- MYD 存储数据
- MYI 存储索引
应用场景:以读操作和插入操作为主,对事务完整性,并发性要求不高;但目前该场景下一般用NoSQL数据库如MongoDB
Memory
该引擎将数据存在内存中。
- 内存存放
- hash索引
文件:
- sdi
应用场景:用于临时表及缓存
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 多巴胺の小窝!
评论