总结: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进行分类然后转发给各个对应的处理模块
主要功能:
- 将sql语句进行予以和语法的分析,分解成数据结构,然后按照不同的操作类型进行分类,然后做出针对性的转发到后续步骤,以后sql语句的传递和处理就是基于这个结构的。
- 如果在分解过程中遇到错误,那么就说明这个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:网络接入存储