引言

MySQL是一个典型的C/S架构程序,MySQL Server提供数据库服务,完成客户端的请求和操作,Client负责连接到Server。MySQL和其他关系型数据库不一样的地方在于它的弹性以及可以通过插件形式提供不同种类的存储引擎,MySQL请求处理过程会根据不同的存储引擎发生变化,比如事务性的InnoDB和非事务性的MyISAM,数据的存储和SQL的执行会产生很大的差异。本文以MySQL5.7为例,简单介绍MySQL的物理和逻辑架构。

1. MySQL物理结构

1.1 配置文件

  • auto.cnf: 配置了MySQL Server的UUID
  • my.cnf: MySQL的配置文件

1.2 其他重要文件

  • -basedir=dir_name: MySQL安装的二进制文件目录
  • -datadir=dir_name: MySQL的数据目录和
  • -pid-file=file_name: 保存MySQL进程ID文件
  • -log-error=file_name: MySQL错误日志文件

2. MySQL逻辑体系架构

MySQL逻辑系统架构分为3层:

  • 应用层
  • MySQL服务层
  • 存储引擎层

2.1 应用层

应用层是MySQL体系架构的最上层,它可其他client-server架构一样,主要包含如下内容:

  • 连接处理
  • 用户鉴权
  • 安全管理

1. 连接处理当一个客户端向服务端发送连接请求后,MySQL server会从线程池中分配一个线程来和客户端进行连接,以后该客户端的请求都会被分配到该线程上。MySQL Server为了提高性能,提供了线程池,减少了创建线程和释放线程所花费的时间。

2. 用户鉴权 当客户端向MySQL服务端发起连接请求后,MySQL server会对发起连接的用户进行鉴权处理,MySQL鉴权依据是: 用户名,客户端主机地址和用户密码

3. 安全管理 当客户连接到MySQL server后,MySQL server会根据用户的权限来判断用户具体可执行哪些操作。MySQL 提供的部分权限的如下:

mysql> show privileges G;
*************************** 1. row ***************************
Privilege: AlterContext: TablesComment: To alter the table
*************************** 2. row ***************************
Privilege: Alter routineContext: Functions,ProceduresComment: To alter or drop stored functions/procedures
*************************** 3. row ***************************
Privilege: CreateContext: Databases,Tables,IndexesComment: To create new databases and tables

2.2 MySQL 服务层

该层是MySQL Server的核心层,提供了MySQL Server数据库系统的所有逻辑功能,该层可以分为如下不同的组件:

  • MySQL Management Server & utilities(系统管理)
  • SQL Interface(SQL 接口)
  • SQL Parser(SQL 解析器)
  • Optimizer (查询优化器)
  • Caches & buffers(缓存)

1. MySQL Management Server & utilities(系统管理) 提供了丰富的数据库管理功能,具体如下:

  • 数据库备份和恢复
  • 数据库安全管理,如用户及权限管理
  • 数据库复制管理
  • 数据库集群管理
  • 数据库分区,分库,分表管理
  • 数据库元数据管理

2. SQL Interface(SQL 接口) SQL接口,接收用户的SQL命令并进行处理,得到用户所需要的结果,具体处理功能如下:

  • Data Manipulation Language (DML).
  • Data Definition Language (DDL).
  • 存储过程
  • 视图
  • 触发器

3. SQL Parser(SQL 解析器) 解析器的作用主要是解析查询语句,最终生成语法树。首先解析器会对查询语句进行语法分析,如果语句语法有错误,则返回相应的错误信息。语法检查通过后,解析器会查询缓存,如果缓存中有对应的语句,就直接返回结果不进行接下来的优化执行操作。

注:读者会疑问,从缓存中查出来的数据会不会被修改,与真实的数据不一致,这里读者大可放心,因为缓存中数据被修改,会被清出缓存。

4. Optimizer(查询优化器) 优化器的作用主要是对查询语句进行优化,包括选择合适的索引,数据的读取方式。

5. Caches & buffers(缓存) 包括全局和引擎特定的缓存,提高查询的效率。如果查询缓存中有命中的查询结果,则查询语句就可以从缓存中取数据,无须再通过解析和执行。这个缓存机制是由一系列小缓存组成,如表缓存、记录缓存、key缓存、权限缓存等。

2.3 存储引擎层

1. 存储引擎 存储引擎是MySQL中具体与文件打交道的子系统,也是MySQL最有特色的地方。MySQL区别于其他数据库的最重要特点是其插件式的表存储引擎。他根据MySQL AB公司提供的文件访问层抽象接口来定制一种文件访问的机制(该机制叫存储引擎)。

2. 物理文件 物理文件包括:redolog、undolog、binlog、errorlog、querylog、slowlog、data、index等

3. 参考文献

MySQL Architecture and ComponentsUnderstanding MySQL Architecture带你认识 MySQL 之 MySQL 体系结构

更多内容请关注公众号

mysql发生系统错误5_[玩转MySQL之一]MySQL体系架构简介相关推荐

  1. net start mysql 发生系统错误 5。 拒绝访问。

    昨天在Windows 安装的mysql-5.7.19 后,今天想重启一下系统,所以想先关闭mysql在重启主机 结果在cmd里面关闭的时候报这个错 >net start mysql 发生系统错误 ...

  2. mysql5.7解压版错误_mysql 5.7 解压版 安装net start mysql 发生系统错误 2

    1.配置环境变量 用户变量path 添加 mysql 安装目录 2.新建my.ini文件 放到E:\mysql-5.7.24-winx64安装目录下 [mysqld] port = 3306 base ...

  3. 在 Windows 命令提示符下启动 MySQL:net start mysql 发生系统错误 5。 拒绝访问。解决方式小结

    文章目录 一.错误描述 二.错误产生场景 三.产生错误原因 四.解决方式 一.错误描述 我们可能有时候需要通过 Windows 命令提示符来启动 MySQL 服务,但是如果你不注意的话,可能就会报以下 ...

  4. net start mysql 发生系统错误 5。 拒绝访问。的解决方法

    net start mysql 发生系统错误 5. 拒绝访问.的解决方法 发生的问题,由于默认情况下cmd是以用户身份运行的,出现此类问题是由于没有权限.运行cmd时需要以管理员身份运行 以管理员身份 ...

  5. 启用mysql系统找不到指定的文件类型_net start mysql 发生系统错误2 系统找不到指定的文件...

    net start mongodb发生系统错误2 系统找不到指定的文件 安装mongodb时, 将mongodb 作为系统服务启动 net start mongodb,报错发生系统错误2 系统找不到指 ...

  6. C:\Windows\system32>net start MySQL 发生系统错误 1058。 无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动。

    问题概述 C:\Windows\system32>net start MySQL 发生系统错误 1058. 无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动. 解决方法

  7. net stop mysql 发生系统错误5

    win10无法命令开启mysql服务 由于dos下的命令行不是管理员权限. C:\Users\LinQin>net stop mysql 发生系统错误 5.拒绝访问. 使用系统的管理员dos 右 ...

  8. MySQL发生系统错误1067的解决方案

    MySQL发生系统错误1067解决办法如下: 1.删除%windows%/my.ini 2.删除其它地方的my.ini 3.在mysql安装目录下把my-small.ini复制为my.ini 4.在m ...

  9. 启动MySQL发生系统错误 1058

    发生系统错误 1058. 无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动. 解决方式: 计算机管理->服务和应用程序->服务->MySQL鼠标右键->属性(启动类型 ...

  10. cmd中net start mysql发生系统错误5

    问题描述 发生系统错误5 问题分析 由于用户权限太低,需要使用管理员权限进入cmd,启动成功 管理员权限进入cmd可以使用 1.搜索框搜索cmd 2.按住Ctrl+Shift+Enter进入管理员模式

最新文章

  1. LIVE 预告 | 牛津胡庆拥:学习理解大规模点云
  2. Bellman-Ford算法
  3. Lodop客户端本地和集中打印 [是否安装][操作系统]
  4. C++基础11-类和对象之操作符重载2
  5. F5 APM针对Vmware view7.3 VDI业务发布测试问题分析
  6. 1005 继续(3n+1)猜想(25 分)
  7. docker安装mysql主从视频教程_docker安装mysql主从
  8. 分布式 和 集群的区别
  9. 删除时存在依赖_npm依赖管理那些事
  10. 航天信息金税盘接口 js 调用
  11. 利用Echarts+百度地图API绘制可交互的行政区划地图(2021)
  12. 通用对话框Dialog
  13. 微信公众号开发之消息的自动回复
  14. c语言factors函数的意思,factors是什么意思_factors的翻译_音标_读音_用法_例句_爱词霸在线词典...
  15. Latex 自定义命令与环境、箱子
  16. 平凉锅盔西北美食的文化的传承之一
  17. GIthub上关于新冠肺炎数据整理的项目汇总
  18. Fansblog HDU - 6608
  19. Word2Vec中的gensim报错from gensim.models.word2vec import Vocab报错问题
  20. C语言经典例题-将输入的两位数转成英文

热门文章

  1. HDU3595_GG and MM
  2. LightSpeed ORM .NET简单运用
  3. Disable UTC in Ubuntu
  4. document.frames()与document.frames[]的区别
  5. info - 阅读 info 文档
  6. Thinking in Java Reading Note(2.一切都是对象)
  7. Quartz.Net定时任务简单实用(实例)
  8. 深度学习框架如何优雅的做算子对齐任务?
  9. 巴什博弈:取石子游戏
  10. NLP学习—22.Transformer的代码实现