Py学习  »  DATABASE

🎉MySQL的分层你了解吗? | 每天5分钟带你学一个你不知道的小知识点🎉

XiaoLin_Java • 2 年前 • 280 次点击  
阅读 135

🎉MySQL的分层你了解吗? | 每天5分钟带你学一个你不知道的小知识点🎉

本文已参与掘金创作者训练营第三期「话题写作」赛道,详情查看:掘力计划|创作者训练营第三期正在进行,「写」出个人影响力

🎈序言

    MySQL可以说是我们普通人用的最多的一种关系型数据库了,无论是我们学习还是工作,基本都离不开一句SQL:select * from ,很真实有没有,但是你写了那么多的SQL,你了解MySQL的分层吗?或者说你知道MySQL有分层这东西吗?应该很大一部分的人都是不清楚的,下面我们来看看大厂高频考点。

🎁MySQL的分层架构

    MySQL大致分为四层,我画了一个简图,从上往下依次是:连接层、服务层、引擎层和存储层。他们各自分工明确。我们解析来依次来唠唠这些层。

MySQL分层.png

🧧连接层

    连接层,顾名思义连接,他最主要的作用肯定是建立客户端与MySQL服务端之间的链接,简单来说就是中间人,牵线的。     他是在最上层是一些客户端和连接服务,包含本地 sock 通信和大多数基于客户端/服务端工具实现的类似于 tcp/ip 的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于 SSL 的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。

🎨服务层

    服务层就比较重要了,我们来想想,我们写的SQL最终都是要交给SQL的服务器的,那么MySQL作为目前最主流的数据库,每天处理那么多的数据,他能没两把刷子?他需要对你传进来的数据做一点处理和优化,提升速度。     服务层提供各种用户使用的接口,同时提供SQL优化器,对用户传进来的SQL语句进行优化。他有几个常见的组件。

组件名描述
Management Serveices & Utilities系统管理和控制工具
SQL InterfaceSQL 接口。接受用户的 SQL 命令,并且返回用户需要查询的结果。比如 select from就是调用 SQL Interface
Parser解析器。 SQL 命令传递到解析器的时候会被解析器验证和解析
Optimizer查询优化器。SQL 语句在查询之前会使用查询优化器对查询进行优化,比如有where 条件时,优化器来决定先投影还是先过滤。
Cache 和 Buffer查询缓存。如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key 缓存,权限缓存等

💎引擎层

    说到MySQL的引擎,我们肯定不陌生,最常见的就是InnoDB和MyISAM引擎,隐藏考点:这俩的区别是啥?知道的小伙伴可以去评论区留言,搞一波抽奖好吧,满五个回答以上就抽!

    存储引擎层,存储引擎真正的负责了 MySQL 中数据的存储和提取,服务器通过 API 与存储引擎进行通信。不同的存储引擎具有的功能不同,这样我们可以根据自己的实际需要进行选取。

👑存储层

    存储层主要用于数据的存储,我们从上一层中查询出来的数据会被封装到这一层。

📺总结

1.首先客户端发出一个Select操作。

2.连接层接收后给服务层。

3.服务层对你的查询进行一个优化,并把优化结果给引擎层。

4.选择当前数据库的引擎,选完引擎后,引擎将最终的数据交给了存储层。

5.存储层,用存储层来存数据。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/118749
 
280 次点击