MySQL:基础架构和工作流程
【参考文章】:01|基础架构:一条查询语句的执行流程
1. 基本架构
大体来说,MySQL可以分为Server层和存储引擎两部分。
Server层包括链接器,分析器,优化器,执行器等,涵盖大多数核心服务功能,一般跨存储引擎的功能都在这一层实现,比如存储过程,触发器,视图等。
存储引擎负责数据的存储和提取。其架构模式是插件式,支持InnoDB,MyISAM,Memory等存储引擎,MySQL5.5.5版本后默认引擎为InnoDB。
1.1 连接器
负责和客户端建立连接,获取权限,维持和管理连接。
常用命令:mysql -h127.0.0.1 -P3306 -uroot -p123456
连接认证通过后,连接器在权限表中查询你拥有的权限,之后这个连接的权限逻辑判断都依赖此时读到的权限。这意味着一个连接一旦建立后,之后就算修改这个用户的权限,也不会影响已经存在连接的权限。
可以通过 show processlist查看当前所有连接的状态;
连接完成后如果没有其他操作,将处于空闲状态,空闲状态的连接存在时间有一定限制。由参数wait_timeout控制,默认8小时。
关于连接的优化:
1. 定期断开连接。使用一段时间或者执行过一个占用内存的大查询之后主动断开连接;
2. 在5.7版本后,可通过执行 mysql_reset_connection 重新初始化连接;
1.2 查询缓存
执行查询语句时,先在缓存中查询,缓存命中失败后再去数据库查询;
一般以查询语句为 key, 查询的结果集为 value ,以键值对的形式将查询结果缓存在内存中。
优点:查询缓存命中率较高时,可以大幅提高查询效率;
缺点:一般情况下缓存失效的情况较多,一旦对某个表进行更新,这个表的所有查询缓存会被清空;
8.0 版本已经不支持查询缓存功能。
1.3 分析器
根据语法规则判断SQL语句是否满足SQL语法,判断表是否存在,列是否存在等等;
1.4 优化器
根据索引或其他规则,优化SQL语句,可能更改SQL语句的执行顺序,但是不会影响查询结果;
1.5 执行器
执行SQL语句之前,进行权限校验,然后进行操作;
MySQL:基础架构和工作流程的更多相关文章
- MySql基础架构以及SQL语句执行流程
01. mysql基础架构 SQL语句是如何执行的 学习一下mysql的基础架构,从一条sql语句是如何执行的来学习. 一般我们写一条查询语句类似下面这样: select user,password ...
- 步步深入MySQL:架构->查询执行流程->SQL解析顺序!
一.前言 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了. 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序 ...
- MySQL基础架构分析
文章已托管到GitHub,大家可以去GitHub查看阅读,欢迎老板们前来Star! 搜索关注微信公众号 码出Offer 领取各种学习资料! MySQL基础架构 一.引言 我们在学习MySQL的时候,迈 ...
- Nginx的架构及工作流程
NGINX是一个免费的,开源的,高性能的HTTP服务器和反向代理,以及IMAP / POP3代理服务器.NGINX以其高性能,稳定性,丰富的功能集,简单的配置和低资源消耗而闻名,也是为解决C10K问题 ...
- MySQL基础架构之查询语句执行流程
这篇笔记主要记录mysql的基础架构,一条查询语句是如何执行的. 比如,在我们从student表中查询一个id=2的信息 select * from student where id=2; 在解释这条 ...
- 1.MySQL基础架构
好久没发博客了,终于又学完了一点知识并且进行了整理.就从这个MySQL系列开始继续坚持每个月产出几篇. 声明一下,这次的MySQL系列是针对已有一定基础的小伙伴的,关于SQL的使用,一些概念的介绍就不 ...
- MySQL 字符集和校验规则工作流程
MySQL 字符集和校验规则工作原理 字符编码相关参数 数据流中的转码过程 校验规则 Tips:字符集和校验规则总是相伴的 一 从简单的建库语句开始 CREATE DATABASE [IF NOT E ...
- MySQL基础架构
前段时间订阅了<Mysql实战45讲>(从原理到实战),新的一年为自己充充电.对于这部分内容,我所知道的只来源于我大学里学习的课程<数据库原理>,在大学里学习的只是简单的查询, ...
- Mysql基本架构及查询流程
mysql体系结构简单概述: Connectors:接入方,支持协议很多 Management Serveices & Utilities:系统管理和控制工具例如:备份恢复,mysql复制集群 ...
随机推荐
- Windows导入EOS工程
[Windows导入EOS工程] 编写 EOS 智能合约时,有许多EOS提供的结构.函数.宏.文档对这些内容的描述毕竟模糊,再多的文档也比不过看实际的代码,所以还要下载EOS代码看一下. 最好有个ID ...
- JSON转Excel
1.引入js (dist目录下JsonExportExcel.min.js) <script src="https://cuikangjie.github.io/JsonExportE ...
- phpexcel获取excel表格内容
excel表格式: 代码: $objPHPExcel=PHPExcel_IOFactory::load($excelFilePath);//$file_url即Excel文件的路径 $sheet=$o ...
- create react app遇到的问题
我现在想的是吧 static 资源和动态 api 来分开处理, static 资源开启 nginx 服务器,api 请求由 express 完成, 现在的问题是开发的时候 proxy 设定将所有的请求 ...
- DRF中的序列化器
DRF中的序列化器详细应用 视图的功能:说白了就是接收前端请求,进行数据处理 (这里的处理包括:如果前端是GET请求,则构造查询集,将结果返回,这个过程为序列化:如果前端是POST请求,假如要对数 ...
- phpcms的一些问题 乱码,安装
一.乱码:我这的网站出现的乱码情况:后台栏目名乱码,迁站后更新缓存,再更新栏目,内容,前台都乱码. 找了半天原因,经过本地测试,没问题,一上线就出现问题,不同点就是线上的数据库版本是mysql5.5, ...
- python 删除非空文件夹
import os import shutil os.remove(path) #删除文件 os.removedirs(path) #删除空文件夹 shutil.rmtree(path) #递归删除文 ...
- vue js库的条件渲染
条件渲染 通过条件指令可以控制元素的创建(显示)或者销毁(隐藏),常用的条件指令如下: v-if v-if可以控制元素的创建或者销毁 <h1 v-if="ok">Yes ...
- Python local error
原来在python的函数中和全局同名的变量,如果你有修改变量的值就会变成局部变量,在修改之前对该变量的引用自然就会出现没定义这样的错误了,如果确定要引用全局变量,并且要对它修改,必须加上global关 ...
- 命令实现linux和客户端文件上传下载
1.rz/sz命令 linux端使用rz/sz实现和windows客户端 linux服务器需要装了rz,sz yum install lrzsz 当然你的本地windows主机也通过ssh连接了lin ...