很多小伙伴使用了GreatSQL , 但是对GreatSQL的底层原理还不是很了解 , 今天就带大家一起揭开GreatSQL体系架构的神秘面纱!
首先来回顾一张经典的体系架构图:
文章插图
图片
图1_GreatSQL5.7 版本体系架构图
【图文结合带你搞懂GreatSQL体系架构】由此可以发现 , GreatSQL5.7 由以下几部分组成
- 连接池组件
- 系统管理和控制工具
- SQL接口组件
- 查询解析器
- 查询优化器
- 缓存组件
- 可插拔存储引擎
- 系统和日志文件
然而 , 经典同时也意味着这幅图已经相当陈旧了 。在GreatSQL8.0 及更高版本中 , 查询缓存这一功能已经被移除 。
文章插图
图片
图2_GreatSQL8.0 版本体系架构图
总体来说 , GreatSQL8.0 可以分为连接层、服务层、存储引擎层 。
一、连接层(Client Connectors)连接层又名为客户端连接器(Client Connectors)作用是提供与GreatSQL服务器建立的支持 。
客户端通过TCP/IP协议与GreatSQL服务器建立连接 , 每个连接对应一个线程 。连接管理还包括了连接池技术 , 以复用已经建立好的连接 , 减少重复建立连接的开销 。
而且几乎支持所有主流的服务端编程技术 , 主要完成一些类似于连接处理、授权认证、及相关的安全方案 。
会对从 TCP 传输过来的账号密码做身份认证、权限获取
- 用户名或密码不对 , 会收到Access denied for user错误 , 客户端程序结束执行
$ MySQL -uroot -pERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
- 用户名密码认证通过 , 会从权限表查出账号拥有的权限与连接关联 , 之后的权限判断逻辑 , 都将依赖于此时读到的权限
Ⅰ.SQL Interface: SQL接口接收用户的SQL命令 , 并且返回用户需要查询的结果 。比如SELECT … FROM就是调用SQL Interface , GreatSQL支持DML、DDL、存储过程、视图、触发器、自定义函数等多种SQL语言接口
同时还支持NoSQL , NoSQL泛指非关系型数据库和数据存储 。随着互联网平台的规模飞速发展 , 传统的关系型数据库已经越来越不能满足需求 。从5.6版本开始 , GreatSQL就开始支持简单的NoSQL存储功能 。GreatSQL8.0 版本对这一功能做了优化 , 以更灵活的方式实现NoSQL功能 , 不再依赖模式(schema) 。
Ⅱ.Parser: 解析器在解析器中对 SQL 语句进行语法分析、语义分析 。将 SQL 语句分解成数据结构 , 并将这个结构传递到后续步骤 , 以后 SQL 语句的传递和处理就是基于这个结构的 , 并且判断你输入的这个 SQL 语句是否满足 GreatSQL 语法 。
Ⅲ.Optimizer: 查询优化器在开始执行之前 , 还要先经过优化器的处理 。
SQL语句在语法解析之后、查询之前会使用查询优化器确定 SQL 语句的执行路径 , 生成一个执行计划 , 可以使用EXPLAIN命令查看执行计划 。
这个执行计划表明应该使用哪些索引进行查询(全表检索还是使用索引检索) , 表之间的连接顺序如何 , 最后会按照执行计划中的步骤调用存储引擎提供的方法来真正的执行查询 , 并将查询结果返回给用户 。
例如下面的 JOIN 语句:
推荐阅读
- 江疏影的穿搭灵感,服装搭配和妆容的完美结合,时尚又潮流
- 图文 GQ上海红毯:杨颖金发怪异,李沁妆造尴尬,杨幂高开叉好性感
- 值得与Python结合使用的五个新颖的数据科学工具
- 葫芦|翡翠葫芦解锁幸运,传统与现代的完美结合
- 郝刚|中铁三局董事长郝刚和年轻女子牵手、搂腰,中铁三局:图文虚假
- 图文转换技巧 图文自由转
- 结合使用React和其他技术的七种方法
- 三傻大闹宝莱坞情节结合
- QQ批量删除好友的图文教程
- 《暗黑破坏神4》图文攻略百科 全流程全支线全地城事件及莉莉丝雕像收集