Mysql体系结构

  • Post author:
  • Post category: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 慢日志查询



版权声明:本文为qq_39329062原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。