MYSQL架构

SQL架构图

  1. connection Pool(线程池)
    1.1 功能

Authentication: 认证
Thread Reuse: 线程重用
Connection Limits: 连接数量限制
Check Memory: 检测内存(连接线程相关的内存)
caches:必要的线程缓存

Mysql是一个单进程多线程的应用,当用户通过Connetor向Mysql Server 发起请求连接时,通过线程池(Connection Pool)建立一个用户连接,此连接会话将会一直存在,用户可以通过此会话,发对应的SQL语句到服务端,服务端收到SQL语句时,将对语句完成执行

  1. SQL Interface
  2. Parser
    3.1 功能

整个语句的执行分析,查询翻译,把一个查询语可以在本地句转化成对应的语句
分析用户请求的对应,数据库,表字段
3.2 认证过程
连入时验证账户,密码
验证成功后,分析用户是否有权限获取期望数据(Object Privilege检测过程)
生成多个执行树,多种路径其中最优

  1. Optimizer

分析衡量那种方法开销,代价最小(依赖于索引的各种内部组件,得到近似值)
考虑当前Mysql内部实现资源访问时的统计数据
一旦Optimizer发现有更优的实现目的方式,将会改写SQL语句

  • 基于成本的执行计划
  1. Mysql 会使用基于成本的(cost)优化器对执行计划进行选择,每个执行计划大致反应了该计划查询所需要的资源,主要因素是计算查询时所要访问的行数。(存储引擎获取数据统计数据和字典中元数据信息)

  2. 优化器会为每个操作标记成本,基准单位是随机读取数据页的成本

  3. 选择成本最小的最终执行

  4. 因为基于统计数据进行标记成本,可能部分样本无法反应整体情况,导致错误优化

  5. Pluggable Storage Engine

存储负责把具体分析的结果,完成对磁盘上文件路径访问的转换
存储引擎将数据映射到磁盘块的内容加载到内存中

  1. Cache&&Buffers

把频繁访问的热点数据统统装入内存,用户访问直接在内存中修改

  1. 执行过程
    SQL执行过程
    7.1 客户端向MYSQL服务器发送一条查询请求
    7.2 服务端首先检查查询缓存(Hash,查询本身hash值),如果命中缓存,则立刻返回结果(自定义函数,存储函数,用户变量,临时表,系统表都不会命中缓存)
    7.3 服务器进行SQL解析(Parser),预处理,再由优化器(Optimizer)生成对应执行计划
    7.4 MYSQL根据执行计划,调用存储引擎(PluggAble Storage Engine)API执行查询
    7.5 将结果返回给客户端,同时缓存查询结果
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值