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

媒介
又是新的一周,列位周一好。
由于换事变,找屋子这一系列事变都推在了一同,所以近来停更了一个多月。如今一切的事变都已尘埃落定,我也可以安安静静的码字啦。
好了,也不多说,最先新的征程啦。近来一向在看《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网别的相干文章!