mysql服务层介绍,NOSQL+SQL接口(nosql介绍),语法分析器,预处理器,优化器(优化的必要性,基于成本的优化器),缓存(弊端)

devtools/2025/2/28 17:41:50/

目录

mysql%E6%9C%8D%E5%8A%A1%E5%B1%82-toc" name="tableOfContents" style="margin-left:0px">mysql服务层

介绍

服务管理和公共组件

备份

NOSQL,SQL接口

介绍

nosql

Parser模块(语法分析器)

介绍

词法分析

语法分析

示例 

预处理器

引入

介绍

优化器

介绍

优化的必要性

基于成本的优化器

缓存

介绍

弊端 


mysql%E6%9C%8D%E5%8A%A1%E5%B1%82" style="background-color:transparent">mysql服务层

介绍

数据库服务层是整个数据库服务器的核心,主要包括:

  • 服务管理和公共组件
  • nosql和sql接口
  • 解析器
  • 查询优化器
  • 缓存

服务管理和公共组件

备份

全量备份:

增量备份:

NOSQL,SQL接口

介绍

分别对应于传统关系型数据管理非关系型数据操作的不同需求

接口作用:

  • 接收并转发用户发来的sql指令和命令(文本类型),返回结果
  • 它充当了用户(客户端)与数据库之间的中介角色

nosql

可以理解为非关系型数据库

大多数 NoSQL 数据库并不使用传统的 SQL 查询语言

  • 是采用自己的查询语言或者接口来操作数据,更注重高性能和高并发

关系型数据库使用表格结构,而NoSQL 数据库支持更为灵活的结构

  • 如文档、键值对、列族等

Parser模块(语法分析器)

介绍

语法分析器的主要作用是将客户端发来的SQL语句中的关键字和自定义字段进行提取、解析,最终将SQL语句转换为一棵解析树

  • 解析文本类型的指令 -> mysql可以执行的内部表示
  • 分析的过程中包含词法分析和语法分析
词法分析

主要是对关键字进行提取

  • 比如select / update / delete / create...
语法分析

主要判断SQL语句是否满足语法规则

  • 如果语法错误则异出异常,也就是我们常见的ERROR1064(42000):You have an error in your SQL syntax。

例如: 验证是否使用错误的关键字,或者使用关键字的顺序是否正确等,还会验证引号前后是否正确等

示例 

 

预处理器

引入

mysql中不仅会验证和提取关键字,还会进一步检测查找的字段/表是否存在

介绍

根据一些 MySQL 规则进一步检查解析树是否合法

  • 预处理器还会验证权限,通常很快

优化器

介绍

负责选择最优查询执行计划的核心组件 -- 将解析树 -> 查询计划

  • 优化器的目标是根据查询的结构、数据分布、索引等信息,选择一个能够高效执行 SQL 查询的计划,以最小化查询的响应时间和资源消耗

优化的必要性

一条查询可以有多种执行方案

比如说,有两条查询结果都一样的sql,但其中一条把主键的匹配放在了左边,那么效率会更好一些,因为它会先去主键索引中匹配id=1的记录,而不是先全盘扫描匹配name的记录

也就是可能会优化条件过滤的顺序

但也不要因为有优化器的存在就乱写,还是按照mysql匹配索引的规则写出高效的sql

基于成本的优化器

MySQL 的查询优化器是基于成本的优化器,它尝试预测一个查询使用某种执行计划的成本,并选择成本最小的一个

  • 可以通过 SHOW STATUS LIKE 'Last_query_cost' 值得知 MySQL 计算的当前查询的成本

缓存

介绍

MySQL的缓存主要的作用是为了提升查询的效率

  • 当服务器接收到一个select查询语句时,会先进入缓存查询当前SQL语句在缓存中是否存在
  • 缓存以key和value的形式存储,key是具体的SQL语句,value是结果的集合
  • 如果命中缓存,直接返回结果 ; 无法命中缓存,则进入分析器进行正常查询流程

弊端 

value容易失效

  • 数据库中的数据发生变化时,缓存的 value 可能会变得不再准确 (对于查询缓存,如果涉及的表发生了任何变更,相关的缓存数据就会被标记为失效)
  • 如果查询语句中稍微换一些查询的列值,就会形成一条记录,会占用大量资源

所以,mysql5.6版本之后缓存功能默认关闭,8.0被关闭

有参考 -- MySQL 查询执行的过程 - Java程序员进阶 - 博客园


http://www.ppmy.cn/devtools/163402.html

相关文章

【南航博士申请】南京航空航天大学 管理科学与工程专业 “申请考核制”博士笔、面试经验(2025年已录取)

目录 1 个人情况2 南航经管院考核机制3 笔试经验3.1《运筹学》方面3.2《统计学》方面 4 面试经验 1 个人情况 2025年应届双非,提交材料前录用了1篇二作基金委C刊,1篇一作普通C刊,科研积分共计16分。两门笔试都是42分,面试81.5分。…

spring-data-mongoDB

目录 spring-data-mongoDB使用 1.导入mongoDB依赖 2.编写配置文件 3.编写实体类,与mongoDB中的文档相对应,使用Document注解 4.编写service层方法 一.实现保存方法 二.实现修改方法 三.实现删除方法 四.实现查询方法 项目使用mongoDB实现作业范…

Qt:布局管理器

目录 QVBoxLayout QHBoxLayout QGridLayout QFormLayout QSpacerItem 之前使用 Ot 在界面上创建的控件,都是通过 "手动" 的方式来设定的,也就是每个控件所在的位置,都需要计算坐标,最终通过 setGeometry 或者 move…

CSS处理内容溢出

<!DOCTYPE html> <html lang"zh-cn"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>处理内容溢出</title><style>#d1{wid…

DeepSeek集成IT技术开发方向全景解读:重构智能开发新范式

一、技术架构革命:支撑IT开发集成的三大引擎 1. 动态MoE架构(DeepSeekMoE-32B) 通过混合专家系统实现精准任务路由,在软件开发场景中展现出显著优势: 代码生成场景:激活Java/Python/C++等语言专家模块,单元测试覆盖率提升至85%硬件资源优化:FP16量化下推理显存需求低…

2025年软考报名费用是多少?全国费用汇总!

软考报名时间终于确定了&#xff01;想要参加2025年软考的同学们注意啦&#xff01;特别是那些一年只有一次考试机会的科目&#xff0c;千万不要错过哦&#xff01;这里为大家整理了各地的报名时间、科目、费用等信息&#xff0c;快来看看吧&#xff01; 一、2025年软考时间安…

git 国内源

git config --global url.“https://hub.fastgit.xyz/”.insteadOf “https://github.com/” git config --global url.“https://hub.fastgit.xyz/”.insteadOf “git://github.com/” 取消 FastGit 代理: git config --global --unset url.“https://hub.fastgit.xyz/”.in…

MySQL表约束的种类与应用

在MySQL数据库中&#xff0c;表约束是确保数据完整性的关键。约束限制了可以在表中插入或更新的数据类型&#xff0c;保证数据的准确性和可靠性。了解MySQL中的各种表约束对于数据库设计和数据维护至关重要。以下是MySQL支持的主要表约束类型及其应用的详细介绍。 1. 主键约束…