MySQL体系结构

  • 连接层
    • 处理客户端连接;认证与授权
  • 服务层
    • SQL接口
    • 解析器
    • 查询优化器
    • 缓存
  • 引擎层
    • 可插拔的存储引擎
  • 存储层
    • Redo
    • Undo
    • Data
    • Index
    • Binary
    • Error等

存储引擎

存储引擎是存储数据,建立索引,更新/查询数据等技术的实现方式。

存储引擎基于表,而不是库,所以存储引擎也被称为表类型的。

1
2
-- 展示当前数据库支持的存储引擎
show engines;

在建表语句末尾可加上engine=xxx来使用指定的存储引擎

存储引擎特点

InnoDB

  • DML遵循ACID,支持事务
  • 行级锁
  • 支持外键
  • 每个表对应一个xxx.ibd文件,用innodb_file_per_table控制,默认为ON

可以用ibd2sdi工具来从ibd文件提取出sdi表结构数据

逻辑存储结构

  • TableSpace
  • Segment
  • Extent
  • Page
  • Row

image-20240824141841982

应用场景:要求事务完整性,并发条件下要求数据的一致性,数据操作包括增删改查

MyISAM

  • 不支持事务,不支持外键
  • 支持表锁,不支持行锁
  • 访问速度快

文件:

  • sdi 存储表结构消息
  • MYD 存储数据
  • MYI 存储索引

应用场景:以读操作和插入操作为主,对事务完整性,并发性要求不高;但目前该场景下一般用NoSQL数据库如MongoDB

Memory

该引擎将数据存在内存中。

  • 内存存放
  • hash索引

文件:

  • sdi

image-20240824142421073

应用场景:用于临时表及缓存