【赵渝强老师】MySQL的体系架构

在这里插入图片描述
  对于MySQL来说,虽然经历了多个版本迭代,并且也存在不同的分支。但是MySQL数据库的基础架构基本都是一致的。下图展示了MySQL的体系架构。
在这里插入图片描述
  视频讲解如下:

MySQL的体系架构

【赵渝强老师】MySQL的体系架构

一、MySQL Server层

  MySQL的Server层主要有以下7个组件:MySQL向外提供的交互接口(Connectors)、连接池组件(Connection Pool)、管理服务组件和工具组件(Management Service & Utilities)、SQL接口组件(SQL Interface)、查询分析器组件(Parser)、优化器组件(Optimizer)和缓存主件(Query Caches & Buffers)。

  下面分别介绍这7个组件的作用。

  • MySQL向外提供的交互接口(Connectors)
      Connectors组件是MySQL向外提供的交互组件,如java,.net,php等语言可以通过该组件来操作SQL语句,实现与SQL的交互。建立连接之后,我们可以通过“show processlist”语句来查看已经建立的连接,如下图所示。
    在这里插入图片描述

  • 连接池组件(Connection Pool)
      负责监听对客户端向MySQL Server端的各种请求,接收请求,转发请求到目标模块。每个成功连接MySQL Server的客户请求都会被创建或分配一个线程,该线程负责客户端与MySQL Server端的通信,接收客户端发送的命令,传递服务端的结果信息等。

  • 管理服务组件和工具组件(Management Service & Utilities)
      提供对MySQL的集成管理,如备份(Backup),恢复(Recovery),安全管理(Security)等。

  • SQL接口组件(SQL Interface)
      接收用户SQL命令,如DML,DDL和存储过程等,并将最终结果返回给用户。

  • 查询分析器组件(Parser)
      系统在真正执行输入的语句之前,必须分析出语句想要干嘛?例如:首先通过select关键字得知这是一条查询命令,还包括分析要查询的是哪张表以及查询条件是什么?同时,分析器必须分析输入语句的语法正确性。如果SQL中存在语法的错误,则查询分析器组件将返回下面的信息:

“You have an error in your SQL syntax”.
  • 优化器组件(Optimizer)
      优化器是MySQL用来对输入的语句在真正执行之前所做的最后一步优化。优化内容包括:是否选择索引?选择哪个索引?多表查询的联合顺序等等。 每一种执行方法的逻辑结果是一样的,但是执行的效率会有不同,而优化器的作用就是决定选择使用哪一个方案。

  • 缓存主件(Query Caches & Buffers)
      这个查询缓存比较好理解。在每一次的查询时,MySQL都先去看看是否命中缓存,命中则直接返回,提高了系统的响应速度。但是这个功能有一个相当大的弊病,那就是一旦这个表中数据发生更改,那么这张表对应的所有缓存都会失效。
      对于更新压力大的数据库来说,查询缓存的命中率会非常低。除非业务系统就是有一张静态表,很长时间才会更新一次。比如,一个系统配置表,那这张表上的查询才适合使用查询缓存。所以在生产系统中,建议关闭该功能。
      在MySQL 8.0 版本之前,我们可以通过将参数“query_cache_type”设置成 OFF,来关闭查询缓存的功能。但是在MySQL8.0版本之后,直接删掉了这部分的功能。

# 执行下面的语句:
mysql> show variables like '%query_cache%';

# 输出的信息如下:
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| have_query_cache | NO    |
+------------------+-------+

# 如果在MySQL 8以前的版本中,输出的信息如下:
+------------------------------+---------+
| Variable_name                | Value   |
+------------------------------+---------+
| have_query_cache             | YES     |
| query_cache_limit            | 1048576 |
| query_cache_min_res_unit     | 4096    |
| query_cache_size             | 1048576 |
| query_cache_type             | OFF     |
| query_cache_wlock_invalidate | OFF     |
+------------------------------+---------+ 

二、MySQL的存储引擎

  MySQL的存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始成为了默认存储引擎。
  通过“show create table”可以看出创建表时使用的存储引擎。例如下图中的test1表使用的就是InnoDB的存储引擎。
在这里插入图片描述

  • 21
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵渝强老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值