首页 > 数据库 >01 MySQL的基本架构

01 MySQL的基本架构

时间:2024-02-19 14:36:54浏览次数:34  
标签:语句 引擎 缓存 架构 查询 01 MySQL 连接

前言:

记录对林晓斌老师的《MySQL 实战 45 讲》课程学习路程。

01 MySQL的基本架构

MySQL的逻辑架构图

MySQL 分为 Server 层和存储引擎层两部分。

Server 层

功能:实现所有 跨存储引擎 的功能,比如存储过程、触发器、视图等。

连接器、查询缓存、分析器、优化器、执行器等,以及所有的内置函数(如日期、时间、数学和加密函数等)。

连接器

负责跟客户端建立连接、获取权限、维持和管理连接。

                                 mysql -h$ip -P$port -u$user -p
  • 长连接是指连接成功后,如果客户端持续有请求,则一直使用同一个连接。
  • 短连接则是指每次执行完很少的几次查询就断开连接,下次查询再重新建立一个。

若全部使用长连接后,发现有些时候 MySQL 占用内存涨得特别快,从现象看就是 MySQL 异常重启。

可考虑以下两种方案解决:

  1. 定期断开长连接

  2. MySQL 5.7 或更新版本,可以在每次执行一个比较大的操作后,通过执行 mysql_reset_connection 来重新初始化连接资源。

    这个过程不需要 重连和重新做权限验证 ,但是会将 连接恢复到刚刚创建完时的状态


查询缓存

MySQL 拿到一个查询请求后,会先到查询缓存看看,之前是不是执行过这条语句。

之前执行过的语句及其结果可能会以 key-value 对的形式,被直接缓存在内存中。key 是查询的语句,value 是查询的结果。

如果查询能够直接在这个缓存中找到 key,那么这个 value 就会被直接返回给客户端。

大多数情况下不要使用查询缓存

因为查询缓存的失效非常频繁,只要有对一个表的更新,这个表上所有的查询缓存都会被清空。

需要注意的是,MySQL 8.0 版本直接将查询缓存的整块功能删掉了。


分析器

对 SQL 语句做解析,MySQL 需要识别出里面的字符串分别是什么,代表什么

先会做“词法分析“(识别是什么语句,比如通过select关键字,识别出这是查询语句),

然后做“语法分析”(判断输入 SQL 语句是否满足 MySQL 语法)。

一般语法错误会提示第一个出现错误的位置,所以你要关注的是紧接“use near”的内容。


优化器

优化器是在表里面有多个索引的时候,决定使用哪个索引;或者在一个语句有多表关联(join)的时候,决定各个表的连接顺序。


执行器

MySQL 通过分析器知道了你要做什么,通过优化器知道了该怎么做,于是就进入了执行器阶段,开始执行语句。

开始执行的时候,要先判断一下对这个表 T 有没有执行查询的权限

如果有权限,就打开表继续执行。打开表的时候,执行器就会根据表的引擎定义,去使用这个引擎提供的接口

存储引擎层

负责数据的存储和提取。其架构模式是插件式的。

引擎类型默认InnoDB。

不同的存储引擎共用一个 Server 层。

标签:语句,引擎,缓存,架构,查询,01,MySQL,连接
From: https://www.cnblogs.com/itiancong/p/18021019

相关文章

  • centos 7安装sql server 2019
    1.下载安装包: 参考地址:https://packages.microsoft.com/rhel/7/mssql-server-2019/mssql-server-15.0.4083.2-15.x86_64.rpm 找一个自己喜欢的版本,下载下来。或者找大神们的百度网盘也行。2.将文件拷贝到虚拟机目录,运行如下命令开始安装。 3.安装的时候出现缺少依赖包,使......
  • SQLite、MySQL和PostgreSQL的区别
    SQLite、MySQL和PostgreSQL都是广泛使用的开源关系型数据库管理系统(RDBMS),但它们在设计目标、适用场景和功能特性上各有特点:SQLite:简介:SQLite是一个轻量级的嵌入式数据库引擎,它不需要独立服务器进程就可以运行。SQLite数据库文件直接存储在磁盘上,应用程序通过API直接与数据库......
  • 从兼容MySql的国产数据库OceanBase导出数据到MySql5.7报错解决
    现象:用MySQL的客户端或管理工具(如DBeaver/heidisql)正常导出是没有问题的,但是导入会提示错误.原因:导出时,默认建表语句添加了一些OceanBase特有的选项,MySQL不支持.打开导出的.sql文件可以看到,建表语句最后有类似: COLLATE=utf8mb4_binROW_FORMAT=DYNAMICCOMPRESSI......
  • Unity红点系统的架构与设计
    在游戏开发中,红点系统是一种常见的功能,用于提示玩家有未读消息或待处理任务。在Unity引擎中,我们可以使用脚本来实现红点系统,下面我将介绍一种基于Unity的红点系统的架构与设计,并给出对应的代码实现。红点系统的代码实现首先,我们需要创建一个红点管理器的脚本RedDotManager.cs,......
  • centos7安装mysql随记
    安装途中出现RPM-GPG-KEY-mysql实现问题,通过rpm--importhttps://repo.mysql.com/RPM-GPG-KEY-mysql-2022解决,如果网络不好也可以直接复制RPM-GPG-KEY-mysql-2022的内容到RPM-GPG-KEY-mysql中虚拟机版本是centos7,安装mysql5.7,把rpm文件下载好之后直接放到虚拟机上也可以通过虚......
  • docker启动mysql失败原因分析
    dockerlogsmysql 发现问题Can'treaddirof'/etc/mysql/conf.d/修改原因:原来的命令:dockerrun-p3306:3306--namemysql-v/mydata/mysql/log:/var/log/mysql-v/mydata/mysql/data:/var/lib/mysql -v/mydata/mysql/conf:/etc/mysql-eMYSQL_ROOT_PASSWORD=roo......
  • Docker 安装 MySQL8.0
    docker安装mysqldocker仓库搜索mysqldockersearchmysqldocker仓库拉取mysql8.0dockerpullmysql:8.0//默认拉取最新版本dockerpullmysql查看本地仓库镜像是否下载成功dockerimagesmysql:8.0安装运行mysql8.0容器dockerrun-p3307:3306--namem......
  • 01. 初识STM32
    一、什么是STM32  STM32,从字面上来理解,ST是意法半导体,M是Microelectronics的缩写,32表示32位,合起来理解,STM32就是指ST公司开发的32位微控制器。  STM32主要分两大块,MCU和MPU,MCU就是我们常见的STM32微控制器,不能跑Linux,而MPU则是ST在19年才推出的微......
  • 代码随想录算法训练营第二十天 | 236. 二叉树的最近公共祖先 , 501.二叉搜索树中的众
      530.二叉搜索树的最小绝对差 已解答简单 相关标签相关企业 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。差值是一个正数,其数值等于两值之差的绝对值。 示例1:输入:root=[4,2,6,1,3]输出:1示......
  • ABAP:AS01固定资产主数据创建BAPI
    BAPI_FIXEDASSET_CREATE1*&---------------------------------------------------------------------**&Formfrm_zzsdr_data*&---------------------------------------------------------------------**&text*&-------------------------------......