当前位置:首页 > MySQL教程 > 正文内容

浅谈MySQL的团体架构【MySQL教程】,mysql,整题架构

搜教程4年前 (2019-12-01)MySQL教程168

媒介

又是新的一周,列位周一好。

由于换事变,找屋子这一系列事变都推在了一同,所以近来停更了一个多月。如今一切的事变都已尘埃落定,我也可以安安静静的码字啦。

好了,也不多说,最先新的征程啦。近来一向在看《MySQL手艺内情——InnoDB存储引擎》这本书,也恰好记录下吧。

团体架构图

我们先看一下MySQL的架构图,对其先有一个团体的相识。MySQL重要分为四层架构,分别是网络衔接层,效劳层,存储引擎层,物理层。我们寻常写的SQL语句,以及对SQL语句的优化都在效劳层,他实在就是遵照肯定的准绳使得SQL语句可以按我们的预期效果实行。

各部分引见

网络衔接层

重要担任衔接治理,受权认证,安全等。每一个客户端衔接都对应着效劳器上的一个线程。效劳器上保护一个线程池,防止为每一个衔接竖立和烧毁线程。当客户端衔接到MySQL效劳器时,效劳器对其举行认证。可以经由历程用户名与暗码认证,也可以经由历程SSL证书举行认证。登录认证后,效劳器还会考证客户端是不是有实行某个查询的操纵权限。这一层并非MySQL所特有的手艺。

效劳层

该层是MySQL的中心,包含查询缓存,剖析器,剖析树,预处理器,查询优化器。

  • 查询缓存

在正式查询之前,效劳器会搜检查询缓存,假如能找到对应的查询,则没必要举行查询剖析,优化,实行等历程,直接返回缓存中的效果集。

  • 剖析器和预处理器

MySQL的剖析器会依据查询语句,构造出一个剖析树,重要用于依据语法划定规矩来考证语句是不是准确,比方SQL的关键字是不是准确,关键字的递次是不是准确。

而预处理器重假如进一步校验,比方表名,字段名是不是准确等。

  • 查询优化器

查询优化器将剖析树转化为查询设计,平常情况下,一条查询可以有很多种实行体式格局,终究返回雷同的效果,优化器就是找到这个中最优的实行设计

  • 实行设计

在完成剖析和优化阶段后,MySQL依据响应的实行设计去挪用存储引擎层供应的响应接口来猎取效果。

存储引擎层

担任MySQL数据的存储和提取,是经由历程供应一系列的接口来屏障差异引擎之间的差异。

注重:存储引擎是针对表的,而不是针对库。也就是说同一个库里面的差异表可以具有差异的存储引擎。

罕见的存储引擎有两种,MyISAM和InnoDB,下面我们来看下他们的区分。

起首,我们先竖立一个存储引擎为MyISAM的test1表。

create table test1( a INTEGER, b varchar(10) )ENGINE=MyISAM;

我们可以去MySQL的相干目次看一下他现实存储的内容,发明他对应着三个文件。

其次,我们再竖立一个存储引擎为InnoDB的test2表。

create table test2( a INTEGER, b varchar(10) )ENGINE=INNODB;

我们再去看一下他现实存储的内容,发明他对应这一个文件。

那末题目就来了,他的数据文件和索引文件存放在那里啦。这边先留个题目,下下篇"文件"再说。

物理层

将数据存放在硬盘上。

团体流程

我们发送一条SQL语句,其在MySQL中的团体流程究竟是什么样的?

  • 用户先经由历程Navicat等客户端与效劳端竖立衔接,这边须要用户名和暗码举行认证,也可以用SSL证书举行认证。

  • 登录胜利后,MySQL会依据响应权限来推断该角色是不是具有一些表的权限等。

  • 假如具有相干权限,当用户发送一条查询select语句时,MySQL先查询缓存,假如已经有这条语句的缓存,则直接返回,假如没有则实行下面的流程。假如是更新update,新增insert,删除delete则不查询缓存,直接实行下面的流程。

  • MySQL会将SQL语句剖析为树,然后对其举行校验,比方关键字是不是准确,关键字递次是不是准确,表名是不是准确,字段是不是准确等。假如认证没有胜利,则直接返回毛病。假如认证胜利了,则直接下面流程。

  • MySQL对剖析树举行查询优化,由于多个SQL能够表达的意义一样,然则斲丧的时候能够差异很大。所以MySQL对针对表的存储引擎找到最优的语句实行,也就是生成响应的实行设计。

  • 运用上面生成的实行设计,来挪用存储引擎层的接口。也就是我们日常平凡运用的explain,其可以用来检察是不是走索引,斲丧的时候等信息。

  • 差异的存储引擎会到响应的物理存储位置,找到响应的数据,封装并返回效果。

  • 假如拿到了效果集,并且为select语句,MySQL会将效果放入到缓存中,防止下次再举行雷同的操纵而形成资本的斲丧,同时返回给客户端效果,至此,一条SQL语句的实行历程完毕啦。

  • 更多MySQL相干手艺文章,请接见MySQL教程栏目举行进修!

以上就是浅谈MySQL的团体架构的细致内容,更多请关注ki4网别的相干文章!

扫描二维码推送至手机访问。

版权声明:本文由搜教程网发布,如需转载请注明出处。

本文链接:https://www.sojiaocheng.cn/16192.html

分享给朋友:

“浅谈MySQL的团体架构【MySQL教程】,mysql,整题架构” 的相关文章

怎样运用delphi将Clientdataset的Delta保存到数据库中【MySQL教程】,Clientdataset,delphi,Delta

[delphi] view plain copy //ATableName-表名, AKeyField-主键,多个主键用;离隔,如 ;pid;times; from:unit HlsImplBase; [delphi] view plain copy function THlsImplB...

MySQL完成同时查询更新统一张表的实例剖析【MySQL教程】,MySQL,更新,查询

MySQL完成同时查询更新统一张表的实例剖析【MySQL教程】,MySQL,更新,查询

这篇文章重要引见了MySQL数据库同时查询更新统一张表的要领,须要的朋侪能够参考下 在寻常的项目中,经常会遇到如许的题目:我须要在一张标中同时更新和查询出来的数据。比方:有以下图一张表数据,如今须要更新操纵为:把status=1的name值更新为id=2的name值 通常情况下我们会想到...

运用union和in哪一个效率高【MySQL教程】,union,效率高,哪个

一直都认为是in的效力要高,然则此次确有点蒙圈。 SELECT * FROM runinfo WHERE status in (0,2,1,3,4,7,9,10);   这个查询的效力是,经常是1秒多。 mysql> SELECT * FROM runinfo WHERE sta...

怎样竖立可打印中文的数据库【MySQL教程】,数据库,中文,打印

平常的数据库的字符型数据的编码都是 latinl,这是不支撑中文的 而支撑中文的字符编码是utf-8和gbk 要想让数据库里的表能够显现中文就必须在竖立数据库的时刻指定字符编码 1 create database bb charset=utf8; 或许 1 1 create d...

Mycat读写星散在MySQL主从复制基础上完成的实例【MySQL教程】,MySQL,Mycat,主从

Mycat读写星散在MySQL主从复制基础上完成的实例【MySQL教程】,MySQL,Mycat,主从

本日,给人人带来一篇Mycat在MySQL主从复制的基础上完成读写星散,这里人人须要注重的是MySQL的主从复制是依靠的MySQL本身的主从复制机制,Mycat不担任MySQL的主从复制,有关MySQL的主从复制设置,人人能够参考博文《MySQL之——主从复制的设置》,好了,我们接下来进入本日的主题...

SQL server 数据库的数据完整性【MySQL教程】,server,完整性,数据库

存储在数据库中的一切数据值均准确的状况。假如数据库中存储有不准确的数据值,则该数据库称为已损失数据完整性。 细致释义 数据库中的数据是从外界输入的,而数据的输入由于种种原因,会发作输入无效或 错误信息。保证输入的数据符合划定,成为了 数据库体系,尤其是多用户的 关联数据库体系主要关注的题目。...