一次查询的全过程

一次查询的全过程:

在这里插入图片描述

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

在这里插入图片描述

  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

猜你喜欢

转载自blog.csdn.net/xhmico/article/details/129223849
今日推荐