百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> mysql工作道理细致介绍
分享文章到:

mysql工作道理细致介绍

发布时间:09/01 来源:未知 浏览: 关键词:
1、Mysql的组成部分

Mysql由SQL接口,解析器,优化器,缓存,储备引擎组成的。

2、Mysql工作道理图

20180407042920851.png

3、Mysql道理图各个组件说明

3-1:connectors

与其他编程说话中的sql 语句停止交互,如php、java等。

3-2:Management Serveices & Utilities

系统治理和操纵工具

3-3、Connection Pool (连接池)

治理缓冲会员连接,线程处置等需要缓存的需求

3-4、 SQL Interface (SQL接口)

接受会员的SQL命令,并且返回会员需要查询的结果。比方select from就是调取SQL Interface

3-5、 Parser (解析器)

SQL命令传递到解析器的时候会被解析器验证和解析。

解析器主要功效:

a . 将SQL语句分解成数据构造,并将这个构造传递到后续步骤,后面SQL语句的传递和处置就是基于这个构造的

b、假如在分解构成中碰到错误,那么就说明这个sql语句是不合理的,语句将不会连续施行下去

3-6、Optimizer (查询优化器)

SQL语句在查询此前会使用查询优化器对查询停止优化(发生多种施行方案,终究数据库会选中最优化的方案去施行,尽快返会结果) 他使用的是“拔取-投影-联接”战略停止查询。

用一个例子就可以懂得: select uid,name from user where gender = 1;

这个select 查询先按照where 语句停止拔取,而不是先将表全部查询出来今后再停止gender过滤

这个select查询先按照uid和name停止属性投影,而不是将属性全部取出今后再停止过滤

将这两个查询前提联接起来生成终究查询结果.

3-7、 Cache和Buffer (查询缓存)

假如查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。

这个缓存机制是由一系列小缓存组成的。比方表缓存,记载缓存,key缓存,权限缓存等

3-8、Engine (储备引擎)

储备引擎是MySql中详细的与文件打交道的子系统,也是Mysql最具有特点的一个地方。

Mysql的储备引擎是插件式的。它按照MySql AB公司供给的文件拜访层的一个抽象接口来定制一种文件拜访机制(这种拜访机制就叫储备引擎)。

4、SQL语句施行历程

数据库平常不会被直接使用,而是由其他编程说话通过SQL语句调取mysql,由mysql处置并返回施行结果。那么Mysql接受到SQL语句后,又是怎样处置的呢?

第一程序的恳求会通过mysql的connectors与其停止交互,恳求到后,会临时存置在连接池(connection pool)中并由处置器(Management Serveices & Utilities)治理。当该恳求从等候队列进入各处理队列,治理器会将该恳求丢给SQL接口(SQL Interface)。SQL接口接收到恳求后,它会将恳求停止hash处置并与缓存中的结果停止对照,假如完全匹配则通过缓存直接返回处置结果;不然,需要完全的走一趟流程:

(1)由SQL接口丢给后面的说明器(Parser),说明器会推断SQL语句准确与否,若准确则将其转化为数据构造。

(2)说明器处置完,便来到后面的优化器(Optimizer),它会发生多种施行方案,终究数据库会选中最优化的方案去施行,尽快返会结果。

(3)肯定最优施行方案后,SQL语句此时便可以交由储备引擎(Engine)处置,储备引擎将会到后端的储备设备中取得响应的数据,并原路返回给程序。

5、留意

(1)怎样缓存查询数据

储备引擎处置完数据,并将其返回给程序的同时,它还会将一份数据保存在缓存中,以便更快速的处置下一次雷同的恳求。详细状况是,mysql会将查询的语句、施行结果等停止hash,并保存在cache中,等候下次查询。

(2)buffer与cache的不同

从mysql道理图可以看到,缓存那里实际上有buffer和cache两个,那它们之间的不同:

简便的说就是,buffer是写缓存,cache是读缓存。

(3)怎样推断缓存中可否已缓存需要的数据

这里大概有一个误区,觉得处置SQL语句的时候,为了推断可否已缓存查询结果,会将整个流程走一遍,取得施行结果后再与需要的停止对照,看看可否命中,并以此说,既然不管缓存中有没有缓存到查询内容,都要整个流程走一遍,那缓存的优势在哪?

其实并不是这样,在第一次查询后,mysql便将查询语句乃至查询结果停止hash处置并保存在缓存中,SQL查询抵达之后,对其停止一样的hash处置后,将两个hash值停止对比,假如一样,则命中,从缓存中返回查询结果;不然,需要整个流程走一遍。

但愿本文能够为学习数据库的同学供给一些帮忙,文中如有不合错误的地方请指出,不堪感谢!

更多Mysql相关问题请拜访PHP中文网:mysql视频教程

以上就是mysql工作道理具体介绍的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有151人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板