一条select语句的执行流程

server/2024/12/2 7:58:45/

select的工作原理

套接字(socket):

  • 是一个编程接口,允许位于不同主机(甚至同一主机上的不同进程)之间的进程进行双向通信

  • 套接字可以用来发送和接收数据,实现不同计算机或进程之间的网络通信

  • 在网络分层模型中,套接字通常位于应用层和传输层之间是一个抽象层,提供应用程序与网络协议(如TCP/IP)之间的接口

MySQL工作模型结构为C/S 架构,客户端/服务端架构

在这里插入图片描述

server层

  • 连接器

    • 消耗网络资源,负责建立网络连接 ,提供连接协议(unix 套接字/网络 socket)

    • 加载授权表信息,进行连接用户与密码信息验证

    • 创建提供连接线程(即与数据库服务连接的类似tty信息)

      • show processlist; 	   	# 查看连接会话线程
        max_connections=XXXX; 	# 配置项会影响最大连接线程数量 (默认151) 
        
  • 分析器

    • 语法检查:检查SQL语句是写是否正确

    • 语义识别:识别SQL语句类型(DDL DCL DML DQL),判断操作对象是否存在(库、表、字段)

    • 权限识别:检查操作对象权限

  • 优化器

    • 解析预处理:生成所有查询数据方法

    • 优化选择: 选择最合理查询数据方法最佳算法, 选择IO、CPU、MEM等代价成本最低的方法,该过程也可以人为干预

    • 执行计划: 最终得出语句的执行计划 ,利用索引调取数据

  • 执行器

    • 执行器会根据执行计划,决定是使用索引、扫描全表、还是通过某种连接算法来处理数据

    • 如果有多个表的联接,执行器会根据优化器的决定选择最优的联结算法,如嵌套循环联接、哈希联接…

    • 获取磁盘中存储位置-段区页数据存储位置

engine层

负责和磁盘进行数据交互,决定数据从哪个段调取,再判断从段中的哪个区调取,再判断从区中的哪个页调取

  • 是包含多个区的更高层次的结构,负责逻辑上组织表和索引数据
  • 是由多个页组成的,通常包含 64 个页。一个页等于1MB
  • 是最小的存储单位,通常是 16KB一个数据页

http://www.ppmy.cn/server/146655.html

相关文章

1.2 算法和算法评价

1.2.1 算法的基本概念 算法:对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作。 算法的五个重要特性 “好”的算法的五个目标 1.2.2 算法效率的度量 一、时间复杂度 算法的时间复杂度是指一个算法每行…

MySQL、Oracle、SQL Server 和 PostgreSQL 的分页查询

在不同的数据库中,分页查询是常见的操作,用于从大量数据中获取部分数据集。不同的数据库有不同的分页实现方式。下面是 MySQL、Oracle、SQL Server 和 PostgreSQL 的分页查询语法介绍。 1. MySQL 分页 在 MySQL 中,可以使用 LIMIT 和 OFFSE…

开源 - Ideal库 - Excel帮助类,设计思路(一)

今天开始和大家分享关于Excel最长常用操作封装。 01、起因 市面上有很多Excel操作库,这些库设计之初的目标是提供对Excel的各种操作功能,包括数据、样式、公式、图表等等。而对于我们平时开发来说,大多时候并不需要那么多强大的功能&#xf…

java 接口防抖

防抖:防止重复提交 在Web系统中,表单提交是一个非常常见的功能,如果不加控制,容易因为用户的误操作或网络延迟导致同一请求被发送多次,进而生成重复的数据记录。要针对用户的误操作,前端通常会实现按钮的l…

【西瓜书】支持向量机(SVM)

支持向量机(Support Vector Machine,简称SVM)。 超平面 分类学习最基本的想法就是基于训练集合D在样本空间中找到一个划分超平面,将不同类别的样本分开。 但能将训练样本分开的划分超平面可能有很多,应该努力去找到哪…

当新能源遇见低空经济:无人机在光伏领域的创新应用

随着全球能源结构的转型和技术的不断进步,新能源行业已成为推动经济社会发展的重要力量。其中,低空经济作为新兴的战略性产业,正深刻改变着人类社会的出行方式和产业链格局。在这一背景下,无人机与光伏产业的结合,不仅…

.net core 创建linux服务,并实现服务的自我更新

目录 创建服务创建另一个服务,用于执行更新操作给你的用户配置一些systemctl命令权限 创建服务 /etc/systemd/system下新建服务配置文件:yourapp.service,内容如下: [Unit] Descriptionyourapp Afternetwork.target[Service] Ty…

Spring Boot优雅读取配置信息 @EnableConfigurationProperties

很多时候我们需要将一些常用的配置信息比如oss等相关配置信息放到配置文件中。常用的有以下几种,相信大家比较熟悉: 1、Value(“${property}”) 读取比较简单的配置信息: 2、ConfigurationProperties(prefix “property”)读取配置信息并与 …