MySQL内部的核心组件

news2024/9/25 17:17:59

mysql前言

1.MySQL的驱动
2.数据库的连接池
3.MySQL的工作线程
4.SQL接口
5.SQL解析器
6.查询优化器
7.执行器组件
8.存储引擎接口

1.MySQL的驱动是做什么的?

尤其记得刚刚学习MySQL的时候,引入的pom坐标:mysql-connector-java,这个驱动是啥玩意,其实也很简单理解,其实就是和MySQL建立网络连接:在访问数据库的时候,Java系统必须要和MySQL建立一个网络连接,这个connector就是面向Java语言的驱动。

2.MySQL数据库的连接池到底是用来做什么的?

连接就是一条连接,连接池就是存放这些一条条的连接的,那么为什么要用到连接池,这个也很简单,不可能我执行一条sql语句,去和MySQL建立一次连接,然后执行完事后,再销毁连接,然后依次类推,这样是十分消耗资源和性能的,也是完全没有必要的。其实这个道理和线程池的道理差不多,一个线程,创建销毁,一个连接创建销毁,于是就有了连接池和线程池的管理,让系统把精力放在业务上,而不是耗费大量的功夫在创建连接,销毁连接上,创建一个连接也是十分耗时的,连接池市面上有很多:例如C3P0、Driver等等。

3.MySQL的工作线程主要使用来做什么的?

一条SQL语句,谁来负责从连接中获取,谁会将SQL转交给SQL接口,这里聊下题外话,MySQL并不是你直接发给他一条SQL语句,他就直接去执行了,内部其实和Java系统差不多,经过你的A业务逻辑,再经过你的B业务逻辑,最后return回去对应的数据(结果集),所以这个工作线程主要的作用就是用来从连接池中监听发送过来的SQL请求,以及将监听到的SQL执行请求转发给SQL接口。

4.MySQL内部的SQL接口能直接执行SQL语句吗?

做Java开发的,接口是我们常见的也是常写的,这个不必多说,暴露一个接口,MySQL工作线程从连接中监听SQL请求,转交给SQL接口,SQL接口有直接执行SQL语句的能力么?显然是不行的,不着急,慢慢往后看。

5. MySQL内部的SQL解析器主要又是做什么的?

由此可见,MySQL中的组件还是十分多的,每个组件都是自己做自己对应的操作和工作,那么SQL解析器,实际上就是字面意思,做SQL语句解析用的,你发过去的一条select * from user,这些指令是需要通过SQL解析器得让MySQL认识它才会去执行,例如你发了XXX指令,其他设备回传了一个16进制的字节数组,你是否需要转成对应的10进制等等,才能看懂,或者是才能做操作,道理逻辑一样。

6. MySQL内部的查询优化器是做什么的?

显然易见,优化器就是用来做优化的,不得不说平时俺们写代码也好,写文档也好,名字取的还是非常关键的,【ps:和家里的崽子一样,名字起的好,影响都不得了】,查询优化器说白了就是MySQL会选择最优的查询路径,这个查询优化器会告诉sql,应该按照什么样的步骤和顺序,去执行SQL,选择一条最优的执行路径。

7. 执行器组件

到了这一步,捋顺一下整个过程:MySQL的工作线程监听连接池中的SQL请求,将SQL转发给SQL接口,SQL解析器解析SQL接口中的SQL,转交给SQL优化器,选择最优执行路径,此时要做的就是执行这条SQL了,那么实际上执行器组件就会调用MySQL内部的存储引擎例如InnoDB存储引擎去执行这条SQL,执行器会根据优化器生成一套执行计划,不停的调用存储引擎的各种接口去完成sql语句的执行计划,这里又讲到了存储引擎的各种接口,下面第8点简单描述下;

8.存储引擎接口

存储引擎接口,真正的执行sql语句,最后的一步就是将查询优化器和最优的查询路径交给底层的存储引擎去真正的执行SQL语句,存储引擎会按照一定的步骤去查询内存缓存数据,更新磁盘数据,查询磁盘数据等等一系列的操作。

 总结:内容不在多,最后上个简单的流程图便于整篇文章的知识梳理【一条SQL语句经过了层层调度最后调用存储引擎执行SQL的过程】

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/131390.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软考- 计算机组成原理与体系结构

【考点梳理】 考点1、数据的表示(★★★★) 考点1.1、进制的转换 【考法分析】 本考点的基本考法是与内存地址计算、IP地址计算结合考查。 【要点分析】 1、十进制转R进制(短除法); 2、R进制转十进制&#xff0…

Arduino与Proteus仿真实例-WS2812实现音乐氛围灯仿真

WS2812实现音乐氛围灯仿真 本文将使用WS2812实现一个音乐氛围灯。Arduino通过检测音频信号强度,然后转换成W2812灯带驱动信号,从而实现音乐氛围灯。 WS2812的驱动和使用在前面的文章中作了详细的介绍,请参考: Arduino与Proteus仿真实例-WS2812-RGB-LED灯带酷炫效果仿真Ar…

【软件质量】软件质量分析总结报告

软件质量-----“软件与明确地和隐含地定义的需求相一致的程度” 一、质量的概念 Ⅰ、传统的质量概念:产品性能是否符合技术规范 Ⅱ、质量是一组固有特性满足要求的程度 Ⅲ、适用性质量 Ⅳ、质量不仅指产品质量,也指过程和体系的质量 二、软件质量 Ⅰ、产品质…

教你如何用一行Python代码实现GUI图形界面

文章目录一、选择文件夹二、选择文件三、选择日期四、输入文本五、弹窗无按钮六、弹窗无标题七、弹窗只有OK按钮八、弹窗只有Error按钮(红色)九、显示通知窗口十、弹窗选择十一、自定义弹窗实战一、选择文件夹 首先导入PySimpleGUI库,并且用缩写sg来表示。 import…

Kubernetes 笔记(02)— 基本架构、工作机制简述、Master 组件、Node 组件

1. Kubernetes 的基本架构 Kubernetes 采用了现今流行的“控制面 / 数据面”(Control Plane / Data Plane)架构,集群里的计算机被称为“节点”(Node),可以是实机也可以是虚机,少量的节点用作控制…

【CUDA入门笔记】GPU存储结构模型(2)

GPU存储结构模型 1.CPU可以读写GPU设备中的Global Memory、Constant Memory以及Texture Memory内存储的内容;主机代码可以把数据传输到设备上,也可以从设备中读取数据; 2.GPU中的线程使用Register、Shared Memory、Local Memory、Global Me…

python网络程序设计,TCP协议客户端服务端智能聊天设计

计算机网络基础知识 网络体系结构,分层设计的好处 网络协议三要素:语法、语义、时序 常见应用层协议:ftp、http、smtp、pop3、telnet…… 传输层主要概念:TCP、UDP、端口号 IP地址 MAC地址 计算机网络基础知识 IP地址 1.IP地址 …

内核RCU的一次实践——实战中加深了理解

遍历内核链表是个常规操作,遍历链表过程可能会向链表增加新成员或者从链表剔除老成员,因此遍历链表时一般需要spin lock加锁保护。如果向链表增加新成员或者从链表剔除老成员不经常出现,大部分只是遍历查询链表中成员,此时链表遍…

Spring Cloud:eureka注册中心

在传统的单体应用中,所有的业务都集中在一个服务器中,当浏览器发起请求时,通过前端请求调用后端接口,后端接口调用相应的业务并在前端进行响应,整个的调用就是从请求到响应的一条龙服务。所以不存在服务之间的中转&…

jetson nano GPIO引脚控制舵机

文章目录一.舵机介绍二.舵机工作原理180度舵机360度舵机三.利用jetson nano GPIO控制舵机1.jetson nano与舵机接2.c编写程序输出脉冲(Qt做界面)一.舵机介绍 舵机,是指在自动驾驶仪中操纵飞机舵面(操纵面)转动的一种执行部件。分有&#xff1a…

代码随想录算法训练营第十三天(栈与队列)| 239. 滑动窗口最大值,347.前 K 个高频元素

代码随想录算法训练营第十三天(栈与队列)| 239. 滑动窗口最大值,347.前 K 个高频元素 239. 滑动窗口最大值 之前讲的都是栈的应用,这次该是队列的应用了。 本题算比较有难度的,需要自己去构造单调队列,建…

std::map使用方式以及注意事项(关于相同key的问题)

std::map的使用在C开发中也是经常会用到的一些东西,这里进行一些简单的使用记录,包括如何插入、删除以及修改等。 1、std::map插入: map的插入使用的是insert的方式,一个map包含了key与value两个值。首先需要对两个值进行赋值&a…

Spring Security认证授权练手小项目 腾讯视频VIP权限管理功能

腾讯视频VIP权限管理1、项目功能视频演示2、需求与设计1、需求2、功能概要3、接口设计3、项目源码结构4、项目源码下载5、项目部署1、部署架构2、数据库环境准备3、redis环境准备4、Spring Boot服务准备5、nginx负载均衡准备6、nginx静态资源服务器准备6、项目介绍1、技术架构2…

人工智能-集成学习

1、 集成学习算法介绍 1.1 什么是集成学习 集成学习通过建立几个模型来解决单一预测问题。工作原理:生成多个分类器/模型,各自独立地学习和做出预测。这些预测再结合成组合预测,因此由于任何一个单分类的预测。 1.2 机器学习的两个核心任…

优化RPC网络通信

文章目录什么是RPC通信RPCRPC框架SOARPC通信得重要性具体优化措施1.扩展其他RPC框架.2.选择合适的通信协议3.使用单一长连接4.优化Socket通信.5.高性能的序列化协议6.量身定做报文格式什么是RPC通信 RPC RPC(Remote Process Call),即远程服…

算法训练 —— 链表(2)

目录 1. LeetCode24. 两两交换链表中的结点 2. LeetCode19. 删除链表的倒数第N个节点 3. LeetCode160.相交链表 4. LeetCode141.环形链表 5. LeetCode142.环形链表II 6. LeetCode138.复制带随机指针的链表 1. LeetCode24. 两两交换链表中的结点 两两交换链表中的结点 …

机器学习时间序列特征处理与构造,这篇我建议你收藏

数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。由此可见,特征工程在机器学习中占有相当重要的地位。在实际应用当中,可以说特征工程是机器学习成功的关键。 那特征工程是什么? 特征工程是利用数据领域的相关…

vue3 antd项目实战——Form表单使用【v-model双向绑定数据,form表单嵌套input输入框、Radio单选框】

vue3 ant design vue项目实战——单选框(Radio)的使用以及Form表单的双向绑定知识调用(form表单的源代码附在文章最后)场景复现实现需求form表单整体架构的搭建input输入框文本域的嵌套单选组合Radio的嵌套button按钮组合的嵌套fo…

小米手机不为人知的秘密—后台静默安装任何应用

导读你是否拥有一台小米,HTC,三星或者是一加的 Android 手机呢?如果回答是肯定的,那么你应该意识到,几乎所有的智能手机厂商提供的定制 ROM,如 CyanogenMod、Paranoid Android、 MIUI 或者一些其它的 ROM 都…

再谈指针(12)

目录 1、字符指针 2、指针数组 3、数组指针 1、定义 2、&数组名VS数组名 3、数组指针的使用 1、二维数组的数组名 4、数组参数、指针参数 1、一维数组传参 2、二维数组传参 3、一级指针传参 4、二级指针传参 5、函数指针 6、函数指针数组 7、指向函数指针数…