由上图可知,mysql最上层是连接组件(客户端)。下面服务器是由连接池,管理工具和服务,SQL接口,
解析器,优化器,缓存,存储引擎,文件系统等构成。
1、连接池:由于每次建立连接都需要耗费很长时间和很多的资源开销,连接池的作用就是将这些链接缓存下来,下次可以直接使用缓存好的连接,以提高服务器性能。
2、管理工具和服务:系统管理和控制工具,例如备份恢复,mysql复制,集群等。
3、SQL接口:接收用户sql请求,并且返回用户需要查询的数据 如:select * from xxx ;就是调用SQL接口。
4、解析器:SQL命令传递到解析器的时候会被解析器验证和解析。解析器是一个很长的脚本, 主要功能:
a . 将SQL语句分解成数据结构,并将这个结构传递到后续步骤,以后SQL语句的传递和处理就是基于这个结构的
b. 如果在分解构成中遇到错误,那么就说明这个sql语句是不合理的
5、优化器:查询优化器,SQL语句在查询之前会使用查询优化器对查询进行优化。他使用的是“选取-投影-联接”策略进行查询。
用一个例子就可以理解:
select uid,name from user where gender = 1;
这个select 查询先根据where 语句进行选取,而不是先将表全部查询出来以后再进行gender过滤,这个select查询先根据uid和name进行属性投影,而不是将属性全部取出以后再进行过滤
将这两个查询条件联接起来生成最终查询结果。
6、缓存:查询缓存,如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。通过LRU算法将数据的冷端溢出,未来得及时刷新到磁盘的数据页,叫脏页。
这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等