【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构


持续学习&持续更新中…

学习态度:守破离


【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构

  • 逻辑架构剖析
    • 服务器处理客户端请求
    • Connectors
    • 第一层 连接层
    • 第二层 服务层
    • 第三层 引擎层
    • 存储层
    • 小结
  • SQL执行流程
    • MySQL中的SQL执行流程
        • 1. 查询缓存
        • 2. 解析器
        • 3. 优化器
        • 4. 执行器
        • 总结
    • MySQL8.0中SQL执行原理
        • 1. 确认profiling是否开启
        • 2. 多次执行相同SQL查询
        • 3. 执行profiles
        • 4. 查看profile
    • MySQL5.7中SQL执行原理
  • SQL语法顺序
  • 数据库缓冲池
    • 缓冲池 vs 查询缓存
    • 缓冲池如何读取数据
    • 查看/设置缓存池的大小
    • 多个Buffer cache实例
    • 引申问题
  • 参考

逻辑架构剖析

服务器处理客户端请求

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第1张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第2张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第3张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第4张图片

在这里插入图片描述

Connectors

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第5张图片

第一层 连接层

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第6张图片

在这里插入图片描述

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第7张图片

第二层 服务层

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第8张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第9张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第10张图片

在这里插入图片描述

在这里插入图片描述

PS:查询缓存组件使用SQL语句作为key,查询结果作为value;命中率很低,很鸡肋。

第三层 引擎层

mysql> show engines;

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第11张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第12张图片

存储层

在这里插入图片描述

小结

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第13张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第14张图片

SQL执行流程

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第15张图片

MySQL中的SQL执行流程

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第16张图片

1. 查询缓存

在这里插入图片描述

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第17张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第18张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第19张图片

推荐做法:(注意:MySQL8.0不可以使用查询缓存)

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第20张图片

不使用查询缓存:

在这里插入图片描述

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第21张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第22张图片

2. 解析器

在这里插入图片描述

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第23张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第24张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第25张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第26张图片

3. 优化器

在这里插入图片描述

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第27张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第28张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第29张图片

4. 执行器

在这里插入图片描述

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第30张图片

在这里插入图片描述

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第31张图片
【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第32张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第33张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第34张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第35张图片

总结

  • 查询缓存
  • 解析器:词法分析、语法分析、语义检查 ——> 解析树
  • 优化器:逻辑优化、物理优化 ——> 执行计划
  • 执行器:调用存储引擎API执行

MySQL8.0中SQL执行原理

在这里插入图片描述

1. 确认profiling是否开启

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第36张图片

在这里插入图片描述

2. 多次执行相同SQL查询

在这里插入图片描述

3. 执行profiles

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第37张图片

4. 查看profile

在这里插入图片描述

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第38张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第39张图片

在这里插入图片描述

MySQL5.7中SQL执行原理

在这里插入图片描述

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第40张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第41张图片

在这里插入图片描述
在这里插入图片描述

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第42张图片

SQL语法顺序

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第43张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第44张图片

数据库缓冲池

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第45张图片

缓冲池 vs 查询缓存

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第46张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第47张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第48张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第49张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第50张图片

缓冲池如何读取数据

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第51张图片

在这里插入图片描述

查看/设置缓存池的大小

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第52张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第53张图片

多个Buffer cache实例

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第54张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第55张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第56张图片

引申问题

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第57张图片

【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构_第58张图片

在这里插入图片描述

参考

尚硅谷宋红康: MySQL数据库(入门到高级,菜鸟到大牛).


本文完,感谢您的关注支持!


你可能感兴趣的:(数据库,数据库,mysql)