Mysql体系结构

MySQL 体系结构

在这里插入图片描述

1 connectors /连接者、连接器

帮助不同计算机语言的代码程序和mysql服务器进行交互的部分。
可以帮助mysql兼容不同计算机语言的连接。

2 连接池/Connection Pool

在这里插入图片描述
MySQL 采用的是 Select 和阻塞IO的模式应对mysql客户端的连接。
首先当select检测到有mysql连接到服务端
,给这条连接分配一个clientid,然后为这条连接分配一个线程池的线程,如果线程池的线程没有了,此时这个连接陷入阻塞,直到线程池中有线程。所以一般mysql服务器最多支持151个mysql客户端的连接。
mysq 连接池的作用
1 通常使用连接池使用的是阻塞的IO,我们需要等待mysql返回才能够进行另外的操作,通常如果等待时间过长,会影响程序运行效率。
2 与mysql连接是一条短链接,如果长时间不与mysql通信,mysql会主动踢掉这条连接。使用连接池会减少用户名用户密码,权限等验证时间。
3 可以利用连接池池进行并发的处理命令。
但是mysql的线程池只能够支持152或者151条连接,连接过多影响mysql的执行效率。

3 SQL interface

将sql语句解析成 DML DDL 存储过程,视图,触发器等对象。
如果有查询结果返回,例如select from ,此时mysql会通过这个工具返回给用户。

4 Parser(查询解析器)

过滤。将sql对象 进行权限验证过滤。并生成执行计划.
在 SQL 命令传递到解析器的时候会被解析器验证和解析,以便 MySQL 优化器可以识别的数据结构或返回 SQL 语句的错误。

5 Optimizer 优化器

分析sql语句执行路径,以及统计分析,根据缓存数据,索引数据具体现有数据,采用什么样的执行方式。制定执行计划。

SQL 语句在查询之前会使用查询优化器对查询进行优化,同时验证用户是否有权限进行查询,缓存中是否有可用的最新数据。它使用“选取-投影-连接”策略进行查询。
例如 SELECT id, name FROM student WHERE gender = “女”;语句中,SELECT 查询先根据 WHERE 语句进行选取,而不是将表全部查询出来以后再进行 gender 过滤。SELECT 查询先根据 id 和 name 进行属性投影,而不是将属性全部取出以后再进行过滤,将这两个查询条件连接起来生成最终查询结果。

6 Caches&buffer

主要操作缓存的是mysql 引擎。引擎需要把经常访问的数据缓存到buffer中,便于下一次查询数据就可以之间在内存中查询,不用访问磁盘。如果内存中没有数据才会访问磁盘。
如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。这个缓存机制是由一系列小缓存组成的,比如表缓存、记录缓存、key 缓存、权限缓存等。

7 工具管理组件

在这里插入图片描述
工具管理组件 :数据备份 恢复 安全 主从复制 集群 分区 实例的管理
information_schma:存储mysql内部数据

8 引擎

引擎是表级别的引擎,针对某一个表来识别某个引擎。
MyISAM 采用表锁 InnoDB 采用行锁
引擎:具体的语句到达,执行计划已经有了的前提下,如何区协调磁盘的数据和缓存的数据怎么存储
怎么缓存的一些策略,如何加锁,事务如何执行等

9 文件系统

redolog undolog 都是和事务相关的。
binary 主要用来存储replication(主从复制)
当数据库为了防止单点故障,创建了从数据库,数据是采用二进制日志传输到从数据库上。
将DML语句造成数据库变更的语句通过二进制日志传送到从数据库上

Data 数据文件
index 索引文件
error 错误文件
Query and slow 慢日志查询

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值