MYSQL教程高阶架构篇:分层架构

作者 : IT 大叔 本文共953个字,预计阅读时间需要3分钟 发布时间: 2020-11-23

很多人理解Mysql是把它看成是一个放数据的容器,其实mysql不仅仅是容器,它应该是一个应用,是一个程序。

Mysql整体分为3层:客户端层,服务层和存储引擎层。存储引擎层才是一个容器。

MYSQL教程高阶架构篇:分层架构插图

客户端:一般我们想给mysql发sql命令就需要有一个客户端连接mysql服务,建立了连接之后才能发请求。这个客户端有很多种,比如Navicat,PHPmyadmin或者是最原始的mysql小黑盒cmd。

服务层:服务层中包含很多组件如连接器,缓存区,词法分析器,优化器,执行器。

A.连接器:你可以把它理解为是一个连接池,存储和管理着多个连接。除此之外还负责校验权限,因为我们知道不是所有用户都有全部权限的,root用户是所有权限都有,而有些用户可能只有查的权限没有读的权限。
一个用户的权限是放在mysql库的user表中的。当连接建立之后,mysql会查询这个用户在user表中的权限,并将该用户在user表中的行存储在一个叫做“连接管理对象”中。用户每次发送sql命令过来的时候,都会在这个连接管理对象中查询用户有没权限执行它发的sql。

B.缓存区:当一个用户发送一条查询的sql,mysql不会立刻执行这条sql,而是先查缓存。这个缓存是一个key-value的结构。Key是sql语句,value就是sql语句查询的结果集。
但是mysql的缓存很少会被用到,它只适用于那种几乎不怎么写入数据的场景。Mysql的缓存默认是关闭的。在5.7版本之后,缓存区已被移除。

MYSQL教程高阶架构篇:分层架构插图(2)

C.词法分析器:当mysql没有走缓存的话,就会进入词法分析器。它的作用是分析当前语句是查的操作还是增删改的操作,以及有没有语法错误,以及where,order by,group by等关键字。

D.优化器:优化器顾名思义就是用来优化查询的sql的。比如,当你的sql的where中出现了多个索引字段,优化器会选择使用其中效率最高的索引进行查询或排序(因为执行一条sql是不可能走多棵B+树,只会走一棵树)。又比如多表联查的时候决定是先查A表还是B表。

E.执行器:执行器才是真正从存储引擎存取数据的组件。不同的存储引擎会提供不同的接口,执行器会调用这些接口来进行查或增删改。如果mysql开启了缓存,就会将查到的结果集存到缓存区里面,然后将结果集返回客户端。

免责声明:
1. 本站资源转自互联网,源码资源分享仅供交流学习,下载后切勿用于商业用途,否则开发者追究责任与本站无关!
2. 本站使用「署名 4.0 国际」创作协议,可自由转载、引用,但需署名原版权作者且注明文章出处
3. 未登录无法下载,登录使用金币下载所有资源。
IT小站 » MYSQL教程高阶架构篇:分层架构

常见问题FAQ

没有金币/金币不足 怎么办?
本站已开通每日签到送金币,每日签到赠送五枚金币,金币可累积。
所有资源普通会员都能下载吗?
本站所有资源普通会员都可以下载,需要消耗金币下载的白金会员资源,通过每日签到,即可获取免费金币,金币可累积使用。

发表评论