【MySQL 进阶】MySQL 的体系架构

推荐阅读


由下图,可以看出MySQL最上层是连接组件。下面服务器是由连接池管理工具和服务SQL接口解析器优化器缓存存储引擎文件系统组成。image.png

1、MySQL 连接层

  1. MySQL 客户端: 用户通过TCP 连接到MySQL的服务器,常见的MySQL 客户端包括,JDBC,PHP等等

  2. MySQL 连接池:由于每次建立建立需要消耗很多时间,连接池的作用就是将这些连接缓存下来,下次可以直接用已经建立好的连接,提升服务器性能。连接管理主要负责鉴权,线程复用,连接管理等等

  3. 管理工具和服务:系统管理和控制工具,例如备份恢复、Mysql复制、集群等,也就是常用的mysqladmin等工具



2、MySQL 服务层

  1. SQL服务层:又称之为接口层,用于接受用户的SQL命令,并且返回用户需要查询的结果。比如select from 就是调用SQL Interface,处于DML,DDL视图,存储过程以及触发器等等。

  2. 解析器: SQL命令传递到解析器的时候会被解析器验证和解析。


解析器是由Lex和YACC实现的,是一个很长的脚本, 主要功能:a . 将SQL语句分解成数据结构(抽象语法树 AST),并将这个结构传递到后续步骤,以后SQL语句的传递和处理就是基于这个结构的 b. 如果在分解构成中遇到错误,那么就说明这个sql语句是不合理的

  1. 优化器:查询优化器,SQL语句在查询之前会使用查询优化器对查询进行优化。他使用的是“选取-投影-联接”策略进行查询。


用一个例子就可以理解: select uid,name from user where gender = 1; 这个select 查询先根据where 语句进行选取,而不是先将表全部查询出来以后再进行gender过滤这个select查询先根据uid和name进行属性投影,而不是将属性全部取出以后再进行过滤将这两个查询条件联接起来生成最终查询结果。在比如索引的排序优化就是在优化器中优化的。

  1. 缓存器: 查询缓存,如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。通过LRU算法将数据的冷端溢出,未来得及时刷新到磁盘的数据页,叫脏页。这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等

3、MySQL 存储引擎


存储引擎是MySQL中具体与文件打交道的子系统,也是MySQL最有特色的地方。MySQL区别于其他数据库的最重要特点是其插件式的表存储引擎。他根据MySQL AB公司提供的文件访问层抽象接口来定制一种文件访问的机制(该机制叫存储引擎)。对于开发者而言,常见的存储引擎有 MyISAM、InnoDB 以及 Memory等等。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值