MySQL探秘之旅:总体架构先容

打印 上一主题 下一主题

主题 809|帖子 809|积分 2427

接待关注微信公众号:互联网全栈架构

  自从《吃透Redis系列》阅读量屡创新高之后,更加坚定了创作技术系列文章的决心,从而让朋友们得到更加体系化的知识。当然,这是一件非常不容易的事情,让每篇文章都能单独成篇且质量上乘,同时,把它们连起来以后又能构成一个体系,着实困难。但不管如何,我觉得这样的方向和做法没有问题,应该会受到大家的接待,那就迎难而上。
  上次做了一个统计,相对来说,大家对于MySQL的文章比较等待,详细投票环境参见:承蒙厚爱,继续积极。而且,MySQL的重要性非常高,不管是大型公司还是小型企业,不论是互联网还是传统软件公司,险些都会利用MySQL来存储关键的数据信息,即使不是MySQL而是其他的关系型数据库,掌握MySQL的知识也会非常有帮助,由于很多数据库的技术都是相通的,以致有些数据库的筹划和利用都与MySQL高度相似。
  基于此,接下来我就开始写一写MySQL的系列文章。然而,MySQL的知识点非常多,其中有很多还比较复杂,写出来需要泯灭大量的时间和精力,以是请朋友们多多支持,多多转发、点点在看、点点赞。
  在体系化学习一门技术以前,我们需要对它的架构有肯定的了解,从而有一个宏观的总体性把控。作为世界上最盛行的开源数据库,有很多缘故起因促成了MySQL在全世界的遍及,但其中一个主要缘故起因就是它的架构:
  

  
从上图可以看出,MySQL的逻辑架构主要分以下四层:

  





      • 连接层
      • 焦点服务层

      • 存储引擎层

      • 数据存储层


  
一、连接层

  
该层位于MySQL架构的最上层;可以在很多客户端-服务器的架构中看到同样的这一层。这层包括对于大多数据客户端-服务器应用都通用的服务,比如:连接处理惩罚,认证,安全。

  
连接处理惩罚:

  
当一个客户端连接服务器的时间,服务器会为其分配一个连接处理惩罚线程。来自这个客户端的所有查询都在特定的线程里进行处理惩罚。此线程被服务器缓存,以是不需要对每一个新连接都进行创建和烧毁的操纵。

  
认证:

  每当一个客户端连接MySQL服务器的时间,服务器都会执行认证。认证基于主机、用户、暗码。比如:
  root@localhost: 客户端用户名
  localhost:主机名,请求从这里发起
  
安全:

  
客户端连上MySQL服务器以后,服务器会检查客户端是否有权限发起特定的请求。比如:

  1. mysql> show privileges \G
  2. *************************** 1. row ***************************
  3.   Privilege: Alter
  4.   Context: Tables
  5.   Comment: To alter the table
  6. *************************** 2. row ***************************
  7.   Privilege: Alter routine
  8.   Context: Functions,Procedures
  9.   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运用了多种优化技术。这些技术可能包括,查询重写,扫描表的顺序以及选择合适的索引。现实上你可以扣问服务器来表明优化的多个方面。比如:

  1. 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企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

没腿的鸟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表