Mysql基本架构

1.mysql的组成

简图

FA77AB34A02F0399C8AA7B39EA010BA2.jpg

逻辑架构

image.png

客户端

PHP JAVA Go 等

服务层

连接器:管理连接,权限验证。
查询缓存: 命中则直接返回结果。
分析器:词法分析,语法分析。
优化器:执行计划生成,索引选择。
执行器:操作引擎,返回结果。

存储引擎层

存储引擎:存储数据提供读写接口。

数据存储层

主要是将数据存储在运行于裸设备的文件系统之上,并完成与存储引擎的交互。

2.客户端

首先以PHP为例连接mysql

$db = mysql_connect(ip:port,user,password);

这个php连接mysql语句就是客户端工具,用来跟数据库服务端建立tcp连接。

3.连接器

当客户端和服务端建立起tcp握手后,连接器开始认证身份。

用户名或密码不对,会收到Access denied for user错误,客户端结束执行。
如通过,连接器在权限表中查出拥有的权限。

连接完成后,如果没有后续的动作,这个连接就处于sleep状态。


image.png

客户端如果8小时(默认时间,由wait_timeout控制)没有动静则自动断开。

4. 查询缓存

MySQL的查询缓存是MySQL内置的一种缓存机制。比如我们发送select * from user where name=tuzisir 这么一个查询,MySQL首先检索内存中是否有数据并且数据是否过期,如果没有数据或者数据已经过期就去数据库中查找,如果有数据并且没有过期就直接返回数据。对于sql的匹配规则非常简单,就是字符串的比较,只要字符串相同,那么就认为是同一个查询。

5.分析器

跟语言的分析是一样的。

词法分析: sql 关键词是否正确

(拿php举例,一条语句 if else 解析出这是正确的而不是 fi else)

语法分析: 格式是否正确

(拿php举例,一条语句 if else 解析出这是正确的而不是 else if)

6.优化器

MySQL采用了基于开销的优化器,以确定处理查询的最解方式,也就是说执行查询之前,都会先选择一条自以为最优的方案,然后执行这个方案来获取结果。在很多情况下,MySQL能够计算最佳的可能查询计划,但在某些情况下,MySQL没有关于数据的足够信息,或者是提供太多的相关数据信息,估测就不那么友好了。

7.执行器

执行器包括执行查询语句,返回查询结果,生成执行计划包括与存储引擎的一些处理操作。

8.存储引擎

InnoDb
MylSAM
Archive
Blackhole
CSV
Memory
Federated
Mrg_MylSAM
NDB集群

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,167评论 2 89
  • MySQL逻辑架构 下面是一幅MySQL各组件之间如何协同工作的架构图,有助于我们深入理解MySQL服务器。 如图...
    骑小猪看流星阅读 10,247评论 2 135
  • 一、MySQL架构与历史 A.并发控制 1.共享锁(shared lock,读锁):共享的,相互不阻塞的 2.排他...
    ZyBlog阅读 19,948评论 3 177
  • 今天看到一位朋友写的mysql笔记总结,觉得写的很详细很用心,这里转载一下,供大家参考下,也希望大家能关注他原文地...
    信仰与初衷阅读 10,175评论 0 30
  • 一、依赖与函数助手做参数化 1.在配置文件处选择CSV Data Set Config 2.编写数据(这边是使用文...
    蔡CooCoo阅读 2,844评论 0 1

友情链接更多精彩内容