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

目录

mysql服务层

介绍

服务管理和公共组件

备份

NOSQL,SQL接口

介绍

nosql

Parser模块(语法分析器)

介绍

词法分析

语法分析

示例

预处理器

引入

介绍

优化器

介绍

优化的必要性

基于成本的优化器

缓存

介绍

弊端


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程序员进阶 - 博客园

相关推荐
一只鹿鹿鹿3 小时前
政务外网整体设计方案(PPT)
大数据·数据库·web安全·系统安全·流程图·政务
2603_965148114 小时前
社区与学习资源:从入门到精通的API选品学习路径
数据库·人工智能·python·学习·数据挖掘
for_ever_love__4 小时前
MySQL ORDER BY 排序优化:从 Using filesort 到索引有序扫描(含双路 / 单路排序原理)
java·mysql·优化·存储·by·order·filesort
AI砖家4 小时前
安全进入 Agent Loop:2027 年 Coding Agent 的决胜点
数据库·安全·codex·vibecoding
wangqiaowq4 小时前
SQL server C盘空间占满的处理
数据库·sql
文人sec4 小时前
SQL基础入门笔记 | 从零基础到掌握核心查询语句
数据库·笔记·sql
数字新视界4 小时前
机房动环监控提升运维效率
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
SelectDB技术团队4 小时前
冷热分层从建到验:Storage Policy 创建、表级与分区级绑定、SHOW TABLETS 验证的完整命令
大数据·数据库·elasticsearch·搜索引擎·数据分析·apache doris·冷热分层
lambo mercy6 小时前
Day3:结构化输出
java·数据库·oracle
派小心.7 小时前
小程序分享链路中来源参数的传递校验
大数据·前端·数据库·人工智能·小程序·数据分析