MySQL问答一

LarsMySQLMySQL大约 2 分钟

一条SQL的执行流程

  • 连接器:管理链接、验证身份
  • 查询缓存:如果是select语句,则会进行缓存查询(MySQL8.0后被移除)
  • 解析器:解析SQL语句(表、字段不存在的解析不在解析器!!!
    • 词法分析:根据语句关键字构建SQL语法树
    • 语法分析:根据SQL语法树,结合语法规则,分析SQL是否有问题
  • 预处理器:针对SQL语句做前置处理如表、字段检测是否存在,* 扩展为表字段
  • 优化器:讲SQL语句的执行方案(执行计划)定下来,如索引选择
  • 执行器:有了执行计划,执行器负责执行SQL,执行期间与存储引擎交互,存储引擎返回记录,执行期进行判断是否满足查询条件

MySQL的结构

  • Server端
    • 连接器
    • 解析器
    • 预处理器
    • 优化器
    • 执行器
  • 存储引擎

MySQL一张表对应的文件信息

例如一张test表

  • db.opt:存储当前数据库的默认字符集和字符集校验规则
  • test.frm:存储当前表的结构、元数据信息
  • test.ibd:存储表数据,一个独立的表空间文件

InnoDB存储引擎的逻辑存储结构

相关信息

  • 段(Segment)
  • 区(Extent)
  • 页(Page)
  • 行(Row)

MySQL 一行记录的存储结构

InnoDB提供了4中行记录的存储格式:Redundant、Compact、Dynamic和 Compressed

  • Redundant:MySQL5.0以前使用
  • Compact:紧凑型行格式,为了数据页Page中能放更多的行Row,MySQL5.1为Dynamic和默认行格式
  • Dynamic和 Compressed:都基于Compact进行改进,MySQL5.7使用Dynamic为默认格式

2

st=>start: 开始
e=>end: 结束

st->e

3

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.14.1