MySQL的架构学习

总结:MySQL架构

1.Client Connectors:用户端,指的是不同语言中与SQL的交互

2.Management Serveices&Utilities:系统管理和控制工具

3.Connection  Pool:连接池

  管理缓冲用户连接,线程处理等需要缓存的需求。

  负责监听对MySQL Server的各种请求,接受连接请求,转发所有连接请求到线程管理模块,每一个连接上MySQL Server的客户端请求都会被分配(或创建)一个连接线程为其单独服务。而连接线程的主要工作就是负责MySQL Server与客户端的通信

  接受客户端的命令请求,传递Server端的结果信息等。线程管理模快则负责管理维护这些连接线程。包括线程的创建,线程的cache等

4.SQL Interface:SQL接口

  接受用户的SQL指令,并且返回用户需要查询的结果。比如select from就是调用SQL Interface

5.Parser:解析器

  SQL命令传递到解析器的时候会被解析器验证和解析。解析器是由Lex和YACC实现的,是一个很长的脚本。

  在MySQL中我们习惯将所有的Client端发送给Server端的命令都称为query,在MySQL Server里面,连接线程接收到客户端的一个Query之后,会直接将该Query传递给专门负责将各种Query进行分类然后转发给各个对应的处理模块

   主要功能:

  1. 将sql语句进行予以和语法的分析,分解成数据结构,然后按照不同的操作类型进行分类,然后做出针对性的转发到后续步骤,以后sql语句的传递和处理就是基于这个结构的。
  2. 如果在分解过程中遇到错误,那么就说明这个sql语句是不合理的

6.Optimizer:查询优化器

  Sql语句在查询之前会使用查询优化器对查询进行优化,就是优化客户端请求的query,根据query和数据库中的一些统计信息,在一系列算法的基础上进行分析,得出一个最优策略,告诉后面的程序如何得到这个程序的结果。

使用的是:“选取-投影-联接”策略进行查询,比如select name from student where gender=‘男’;

  这个查询先根据where语句进行选取,而不是现将表全查询出来之后再进行gender过滤;

先根据name进行属性投影,而不是将属性全部取出来之后再进行过滤;将这两个查询条件联接起来生成最终查询结果。

7.Cache和Buffer:查询缓存

它的主要功能是将客户端提交给MySQL的Select类的语句请求的返回结果集cache(缓冲存储)到内存中,与该语句的一个hash值做一个对应。

该语句所取数据的基表发生任何数据的变化之后,MySQL会自动使该语句的cache失效。在读写比例非常高的应用系统中,Query Cache对性能的提高是非常显著的,当然它对内存的消耗也是非常大的。

如果查询缓存中有命中的查询结果,查询语句就可以直接去查询缓存中取数据。这个缓存机制是由一系列小缓存组成的,比如表缓存,记录缓存,key缓存,权限缓存等。

8.pluggable storage engine:插件式存储引擎

   是MySQL中最有特色的一点,目前数据库中,基本上只有MySQL可以实现其底层数据存储引擎的插件式管理。这个模块实际上只是一个抽象类,但正是因为它成功的将各种数据处理高度抽象化,才成就了今天MySQL可插拔存储引擎的特点。存储引擎是基于表的,而不是数据库。

9.file system ntfs

ntfs:是windowsNT环境的文件系统

ext4:是linux上常用的文件系统,相当于windows上的ntfs

san:存储局域网络

nas:网络接入存储

猜你喜欢

转载自blog.csdn.net/sophie1314/article/details/83444016