MySQL 体系结构

mysql_architecture.png

连接层

  1. 验证用户身份
  2. 提供了两种连接方式(TCP/IP连接、socket连接)
  3. 建立与SQL层交互的线程

SQL 层

  1. 接收连接层传过来的SQL语句,如DDL、DML和存储过程等。并把结果返回给连接层。
  2. 验证SQL语句的语法、语义。
  3. 解析器:解析SQL语句,最终生成执行计划。
  4. 优化器:从多个执行计划中选出最优的一条。
  5. 执行器:执行选出来的最优计划。
    • 建立一个与存储引擎层交互的线程。
    • 执行SQL获取存储引擎层传来的数据,结构化成表格。
  6. 如果有缓存的化,会把数据写入到缓存。
  7. 记录执行日志(binlog)

存储引擎层

  1. 接收SQL层传过来的执行语句
  2. 与磁盘交互,进行数据的读取、存储,将数据返回给SQL层

 

MySQL 逻辑结构

  1. 表:元数据 + 真实数据行
  2. 元数据:列 + 其他属性
  3. 列:列名 + 数据类型 + 约束(非空、主键、默认值)

 

MySQL 物理结构

数据物理结构

mysql最底层就是数据文件,可以手动在data目录下创建目录,数据库中就能看到这个库。

  1. MySQL的最底层的物理结构是数据文件,也就是说与存储引擎层打交道的文件,是数据文件。
  2. 存储引擎分为很多种类(Linux中的FS)。
  3. 不同存储引擎的区别:存储方式、安全性、性能。

数据库创建时:库和表的名字一定要小写。

数据库物理结构大小单位

  1. 段:由多个区构成,理论上一个表就是一个段。
  2. 区:由连续的多个页组成,理论上一条数据就是一个区,默认为1M。
  3. 页:数据库中的最小存储单元,默认是16K。
  4. 分区表:一个区构成一个段就是一个表。