接待关注微信公众号:互联网全栈架构
自从《吃透Redis系列》阅读量屡创新高之后,更加坚定了创作技术系列文章的决心,从而让朋友们得到更加体系化的知识。当然,这是一件非常不容易的事情,让每篇文章都能单独成篇且质量上乘,同时,把它们连起来以后又能构成一个体系,着实困难。但不管如何,我觉得这样的方向和做法没有问题,应该会受到大家的接待,那就迎难而上。
上次做了一个统计,相对来说,大家对于MySQL的文章比较等待,详细投票环境参见:承蒙厚爱,继续积极。而且,MySQL的重要性非常高,不管是大型公司还是小型企业,不论是互联网还是传统软件公司,险些都会利用MySQL来存储关键的数据信息,即使不是MySQL而是其他的关系型数据库,掌握MySQL的知识也会非常有帮助,由于很多数据库的技术都是相通的,以致有些数据库的筹划和利用都与MySQL高度相似。
基于此,接下来我就开始写一写MySQL的系列文章。然而,MySQL的知识点非常多,其中有很多还比较复杂,写出来需要泯灭大量的时间和精力,以是请朋友们多多支持,多多转发、点点在看、点点赞。
在体系化学习一门技术以前,我们需要对它的架构有肯定的了解,从而有一个宏观的总体性把控。作为世界上最盛行的开源数据库,有很多缘故起因促成了MySQL在全世界的遍及,但其中一个主要缘故起因就是它的架构:
从上图可以看出,MySQL的逻辑架构主要分以下四层:
一、连接层
该层位于MySQL架构的最上层;可以在很多客户端-服务器的架构中看到同样的这一层。这层包括对于大多数据客户端-服务器应用都通用的服务,比如:连接处理惩罚,认证,安全。
连接处理惩罚:
当一个客户端连接服务器的时间,服务器会为其分配一个连接处理惩罚线程。来自这个客户端的所有查询都在特定的线程里进行处理惩罚。此线程被服务器缓存,以是不需要对每一个新连接都进行创建和烧毁的操纵。
认证:
每当一个客户端连接MySQL服务器的时间,服务器都会执行认证。认证基于主机、用户、暗码。比如:
root@localhost: 客户端用户名
localhost:主机名,请求从这里发起
安全:
客户端连上MySQL服务器以后,服务器会检查客户端是否有权限发起特定的请求。比如:
- mysql> show privileges \G
- *************************** 1. row ***************************
- Privilege: Alter
- Context: Tables
- Comment: To alter the table
- *************************** 2. row ***************************
- Privilege: Alter routine
- Context: Functions,Procedures
- Comment: To alter or drop stored functions/procedures
复制代码 二、焦点服务层
该层处理惩罚MySQL关系型数据库管理体系的所有逻辑功能。MySQL服务器的大脑就位于这一层。MySQL的逻辑层分成多个子部件,包括:MySQL服务和工具,SQL接口,SQL解析器,优化器,缓存。
MySQL服务和工具:
MySQL提供了广泛的服务和工具。这是MySQL盛行的主要缘故起因之一。该层提供了MySQL体系管理和维护的服务与工具。比如:备份&规复,安全,复制,集群,分片,工作台。
SQL接口:
结构化查询语言(SQL)是一种查询语言,主要用于数据库查询和步伐筹划,它是一种MySQL用户和服务器交互的工具。SQL接口中一些组件:数据操纵语言(DML),数据界说语言(DDL),存储过程,视图,触发器。
解析器:
MySQL解析查询以便创建一个内部结构(解析树)。MySQL解析器是一种单通道的编译器。按照《MySQL内幕》所形貌,解析器的结构如下:
- 词法分析(从一个字符流中生成词语或者标记),当解析常规语句的时间,它是在第一阶段实现的。
- 语法分析(生成句子),语义分析(确保这些句子都讲得通),以及代码生成(为编译预备),所有这些都是在代码阶段一次性完成的。
优化器:
创建了内部解析树之后,MySQL运用了多种优化技术。这些技术可能包括,查询重写,扫描表的顺序以及选择合适的索引。现实上你可以扣问服务器来表明优化的多个方面。比如:
- EXPLAIN SELECT * FROM world.city;
复制代码 缓存:
MySQL缓存(查询缓存)保存了SELECT语句的完整效果集。在解析查询之前,MySQL服务器先找查询缓存。如果客户端发起的查询与缓存中的完全一致,服务器就简单地跳过解析、优化以致执行,它直接就从缓存中把输出显示出来。
三、存储引擎层
可插拔式存储引擎的特点让MySQL很独特,也让它变成了大多数开辟者的首选。存储引擎负责数据的抽取和存储,服务器通过接口与存储引擎进行通信。差别的存储引擎提供差别的锁机制、事件、索引等功能,它们都有各自的优缺点和相应的适用场景。InnoDB是默认的也应用最广泛的存储引擎。MySQL支持的存储引擎主要有:MyISAM, InnoDB, Federated, CSV, Memory等。
最后一层是数据存储层,它是存储数据的文件体系,包括数据文件、日记文件等。
四、总结
本文通过一张图来讲解MySQL的整体架构,从高屋建瓴的视觉来洞察MySQL各个重要构成部门,从而创建一个整体性的熟悉。
同时,MySQL的架构也是口试中常见的一个问题,特别是一些资深开辟的职位。由于MySQL的重要性和盛行度是云云的高,如果对它的架构没有一个全局性的熟悉显然是不敷的。
另外,有时间也会看到一些言论,就是觉得MySQL这样的数据库过时了,然后张口闭口都是NoSQL、分布式、高并发,而MySQL已经出现这么多年,应该淘汰了,看到类似这样的说法,只能让人贻笑大方,专业的人士是不可能说出这样的话的,MySQL或者类似的关系型数据库,它们的重要性怎么强调都不为过。
创作不易,烦请点个在看、点个赞。
有任何问题,也接待留言讨论。
参考文章:
https://dev.mysql.com/doc/refman/5.7/en/
保举阅读:
吃透Redis系列:常见口试题及解析
吃透Redis系列:分布式锁
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |