一次查询的全过程

一次查询的全过程:

在这里插入图片描述

比方说我这里有一个订单系统,一条查询请求发送过来,它内部是怎么执行的呢?

在这里插入图片描述

  1. 用户发送请求到业务系统,就会有一条线程来处理这个请求
  2. 该线程会在数据库连接池里面获取一个JDBC连接
  3. MySQL工作线程会监听数据库操作的请求
  4. 工作线程读取到 SQL 后会交给SQL接口去执行(SQL接口是一个组件,负责处理接收到的SQL语句)
  5. SQL接口会把SQL语句交给SQL解析器,SQL解析器能将SQL语句转化成 MySQL 系统能够理解的格式
  6. 接着交给查询优化器来选择一个最优的查询路径
  7. 执行器会根据优化器选择的执行计划,去调用存储过程的接口按照一定的顺序和步骤,调用存储引擎接口
  8. 在存储引擎中,有一块内存区域(Buffer Pool),内存块中有很多实例(chunk), 通过 SQL的描述数据,就能够查询对应的缓存页
  9. 磁盘文件通过 IO 将数据加载到内存当中,也就是缓存页中
  10. 存储引擎将所需的数据进行返回
  11. 最终返回给用户

查看默认 buffer pool 的大小

select @@innodb_buffer_pool_size/1024/1024;

查看默认 buffer pool 的实例

select @@innodb_buffer_pool_instances;

参考文章:
分库分表实战:追根溯源—一次查询会经过哪些流程呢:https://www.51cto.com/article/712999.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值