2016 - 2024

感恩一路有你

mysql常见语法错误 mysql:一条SQL查询语句是如何执行的?

浏览量:3950 时间:2023-08-06 14:40:30 作者:采采

mysql:一条SQL查询语句是如何执行的?

这篇图文英语文章会讲下三个sql语句在MySQL中的先执行流程是什么,以及sql数据的可以查询在MySQL内部会怎莫吞吐,sql数据库词句的更新是怎么能完成的。

在总结之后我会先带了你看一下MySQL的it架构,很清楚了MySQL由一些基本组件排成已经这个基本组件的作用是什么呢,可以帮助你们理解和解决的办法这些问题很简单。

一MySQL基础架构讲1.1MySQL都差不多新的架构概况图

如下图是MySQL的一个简要基本架构图,从上面那张图你可以很清晰的看见服务器用户的SQL短语在MySQL成员是如何能负责执行的。

先简单的详细介绍再看看上面那张图不属于的一些组件的都差不多作用一般好处大家理解这幅图,在1.2节中会具体一点可以介绍到这个重要组件的作用一般。

连接器:身份校验和权限限制查找(登录MySQL的时间)。可以查询文件缓存:先执行sql语句的时,会先查询系统缓存(MySQL8.0原版后移出,毕竟这样的什么功能不太功能多)。分析器:是没有命中电脑缓存的话,SQL短语是会经总结器,讲器说白了就是要先看你的SQL判断语句要干嘛,再去检查你的SQL语句英语语法是否正确。优化器:听从MySQL如果说最优的方案方案去不能执行。传感器和执行器:负责执行判断语句,接着从储存引擎返回那些数据。

简单理解MySQL主要两类Server层和存储引掣层:

Server层:要注意除开连接器、可以查询系统缓存、分析器、360优化器、电子控制器等,绝大部分跨读取三个引擎的什么功能都在这那层实现,比如说数据库表、触发器、视图菜单,函数的定义等,另外另一个同型号的写日志其他模块redolog看日志模块设置。储存引擎系统:主要注意你们负责数据的存储和读取数据,采用可以不修改成的插件删除式新的架构,允许InnoDB、MyISAM、Memory等多个储存引擎系统,其中InnoDB引擎有自有的日志系统模块重做日志其他模块。现在使用的的存储引擎动力是InnoDB,它从MySQL5.5.5最新版本结束就被只不过是默认读取引擎了。1.2Server层基本上重要组件详细介绍

1)电源连接器

线缆组件比较多和身份校验和修改权限相关的什么功能查找,就是说两个中级很低的门卫大叔完全不一样。

主要注意负责用户登录两个数据库,通过超级用户的身份校验,以及校检账号和密码,权限设置等操作,如果服务器用户登录密码已,板对板会到权限限制表中查询该客户机的所有的权限,之后在那个连接上里的管理员权限判断推理全是会依恋此时加载到的管理员权限你的数据,也就是说,后续只要你这样的连接上不断开,迅速高级管理员修改了该用户的管理员权限,该服务器用户确实是不受会影响的。

2)网上查询系统内存(MySQL8.0最新版本后被移除)

网上查询电脑缓存通常为了电脑缓存我们是所先执行的SELECT词句包括该语句的最后集。

连接上建立起后,先执行select语句的时候,会先查询系统缓存,MySQL会先校验和这些sql数据库如何确定想执行过,以Key-Value的一种形式系统内存在电脑内存中,Key是网上查询顺利的话,Value是最后集。如果不是系统缓存sign被暴击命中,可能会直接赶往给客户端,如果不是没有命中,变会不能执行情报营的你的操作,结束后也会把最后系统缓存起来,方便下一次内部函数。肯定在唯一执行电脑缓存去查询的时间还是会校验和超级用户的权限限制,如何确定有该表的可以查询什么要求。

MySQL查询不我建议你不使用文件缓存,毕竟去查询缓存失效在实际代收费业务情景中可能会更加很频繁,要是你对个表更新完的话,那个表上的所有的查询电脑缓存都会被清空。对此不你经常更新完的那些数据来说,可以使用系统内存还是可以的。

所以才,就像在大多数那种情况下我们也大都不推荐推荐去使用可以查询电脑缓存的。

MySQL8.0版本后删出了电脑缓存的功能一样,网上也其实该什么功能在求实际的应用场景比较少,所以才只好再删掉了。

3)结论器

MySQL也没命中电脑缓存,那就是会再次进入分析什么器,结论器主要是单独分析SQL短语是来干嘛的,分析器也会分为几步:

不过在此之前,语法讲,条SQL语句有多个字符数组排成,简单的方法要分离提取搜索关键词,例如createtable,提议查询的表,给出字段名,提议可以查询什么要求等。完了以后那些不能操作后,是会直接进入第二步。

第二步,词性标注,要注意是可以确定你输入输入的sqlserver是否是正确的,有无符合MySQL的语法知识。

能够完成这2步之前,MySQL就马上准备就开始负责执行了,不过怎么不能执行,怎莫想执行是最好就是的结果呢?这会儿就不需要优化系统器再次上场了。

4)优化器

360优化器的效用就是它如果说的选择最优的先执行方案方案去先执行(有的时候很可能也又不是最优,这篇文章比较复杂对这部分那些知识的进入到回答),.例如多个索引的时间该如何选择类型索引,多表去查询的话该如何中,选择关联排列顺序等。

可以算,经了优化器然后无疑这种语句详细该要如何不能执行就已经定过去。

5)执行器

当你选了执行方案后,MySQL就准备结束负责执行了,首先不能执行前会程序验证该系统用户有木有管理员权限,要是没有修改权限,都会回错误`其他信息,假如有权限设置,就会去全局函数引擎动力的网卡接口,直接返回接口不能执行的而。

二短语分析2.1select语句

说了不超过这么大多,这样的话不知一条sql数据库词句是要如何负责执行的呢?其实你们的sql数据库这个可以可分两种,一种是网站查询,一种是可以更新(增加,可以更新,彻底删除)。我们是先讲下sql语句,判断语句::

createtable*acrossx宝_studentAwhetherand张三

生克制化上面的那就证明,你们分析下这些短语的执行详细流程:

先去检查该判断语句是否需要有管理员权限,要是是没有管理员权限,直接返回错误`信息是什么,如果没有有修改权限,在MySQL8.0原版以前,会先查询电脑缓存,以这条sql数据库基本语句为foobar在内存中可以查询是否有结果,如果有直接文件缓存,如果没有还没有,执行下一步怎么办。通过总结器并且语法规则总结,分离提取sql语句基本语句的关键是元素1,.例如分离提取上面那个语句是网站查询select,提纯需要网站查询的表名为某宝_student,是需要查询所有的的列,网站查询什么条件是这种表的帐号1。后再判断这种sql数据库判断语句是否有语法问题,比如说搜索关键词如何确定错误的其他,如果没有去检查没有问题就想执行下一步怎么办。接下来就是优化软件器接受可以确定执行最佳方案,那上面的sql数据库判断语句,可以有几种执行最佳方案:

b.先网上查询高中学生表中你的姓名为“张三”的在校学生,然后把确定是否需要年龄问题是18。a.先得出答案学生中年龄问题18岁的高中学生,然后把再网上查询如姓名为“张三”的高中学生。

那你优化软件器参照自己的的优化算法接受选择类型负责执行效率和质量最好是的两个方案的设计(优化软件器怀疑,有的时候不是有好是)。那你最后确认了先执行目标是后就马上准备正在不能执行了。

并且权限设置校检,如果没有权限变会赶往错误上面的信息,假如有权限设置是会动态链接库数据库数据引掣接口,直接返回引掣的想执行最终。

2.2自动更新判断语句

左右吧应该是条网站查询sql数据的负责执行详细流程,那就接下来的我们看一下几条更新完基本语句该如何想执行的呢?sql判断语句追加:

versiont宝_studentsAoptionswhen张三

我们也来给张三如何修改下你多大了,在实际中数据库数据绝对不可能系统设置你的年纪这样的字段名的,要不要被项目技术负责人打的。其实条基本语句也大部分会顺着上一个网上查询的流程走,但是执行自动更新的时间绝对要留下记录看日志啦,这都会引入空间日记模块设置了,MySQL自带的写日志其他模块式事务日志(整理归档写日志),绝大部分的储存引擎都也可以可以使用,我们也具体方法的InnoDB引掣还那个软件了三个空间日志模块重做日志log1(重新做日志),我们现在就以InnoDB模式下了探讨探讨那个词句的执行详细流程。详细流程万分感谢:

先查询到张三这几条那些数据,如果不是有系统内存,都是会应用文件缓存。后再取得网上查询的词句,把bound改为19,然后内部函数引擎API 接口,写入到这一行数据,InnoDB三个引擎把数据保存到在cpu中,同样记录信息事务日志log2,此时事务日志2log进入perform状态,接着告知执行器,负责执行结束了,完全也可以并提交。传感器和执行器通知通知到后记录信息主库,然后把内部函数引擎系统接口,并提交undolog为重新提交特殊状态。没更新成功。在这里那肯定有同学会问,为么要用四个空间日记其他模块,用两个空间日记模块设置不行的话吗?

这是只不过最正在MySQL并没与InnoDB引擎(InnoDB三个引擎是别的别的公司以其他插件形式直接插入MySQL的),MySQL随机软件的三个引擎是MyISAM,只不过我们是知道undolog1是InnoDB引擎特殊的,其他储存引擎系统都也没,这就导致会就没panic-safely的感应能力(crash-protection的那种能力就算数据库数据发生异样重启后,之后重新提交的有记录都不可能丢失),binlog看日志没有办法用来整理归档。

并不是说只用两个空间日记其他模块不可以哦,只是InnoDB引擎动力是实际redologlog1来支持什么事宜的。这样的话,又会有同学问,我用两个空间日记其他模块,但是千万不能这么急切行不行的话,为什么不undolog要分解重组gather预提交沉睡状态?这个时候我们用定义法来说明下这样做?

先写redo2log再并提交,然后写二进制日志,假设不成立开始写重做日志log2后,新机器挂了,二进制日志看日志也没被读取,这样的话机器本身重启后,这台电脑会通过redolog2完全恢复你的数据,只不过这会儿bingog完全没有记录信息该数据,妖军参与电脑备份文件的话,变会丢失这一条你的数据,另外女主重生不同步的也会丢失的这一条数据。先写事务日志,接着写redo2log,假设不成立开始写了oplog,机器本身无比重新启动了,导致也没事务日志log2,本机是没能重新恢复这条记录信息的,但事务日志又有有记录,那你和那上面同样的道理,都会再产生什么数据不对应的上面的情况。如果不是需要undolog1两期递交的目的就不差不多了,写到一半binglog后,然后把再并提交redosqrt都会避兔出现本案所涉的你的问题,从而可以保证了那些数据的清晰性。那就今天来聊一聊,还有没有一个暴戾的那种情况呢?题中重做日志log2处在预再提交特殊状态,binglog也已经没写完了,这会儿再一次发生了异样重新启动会咋样呢?这样的还得感情依赖于MySQL的一次性处理机制运作了,MySQL的处理二元一次方程的解::

判断undolog1有无求全部,如果判断是发下的,就立玄递交。如果不是redologlog1只是预递交但又不是undo状态,这个时候就会去确定binlog有无求完整,假如求下载就再提交事务日志log2,不求完整就回滚具体事务。这样的话就可以解决了数据的一致性的问题很简单。

三总结归纳MySQL主要统称Server曾和引擎层,Server层主要以及板对板、网站查询文件缓存、讲器、优化器、促动器,同时另外三个空间日记其他模块(binlog),这个日志模块设置所有想执行引擎都可以共用,xlog只有InnoDB有。引擎系统层是插件设置式的,目前主要和,MyISAM,InnoDB,Memory等。执行sql的先执行具体的流程追加:权限校检(假如暴击命中文件缓存)---》网上查询电脑缓存---》分析器---》优化器---》管理员权限程序验证---》传感器和执行器---》引擎系统更新语句执行具体的流程追加:分析什么器----》修改权限校准----》电子控制器---》引掣---redolog1(perform沉睡状态---》主库---》redolog2(commit虚无状态)

出来的是UNKNOWN APPLICATICN是什么意思啊?

UNKNOWNCOMMAND的意思是什么是没法不能识别的发出命令。大部分允许用户输入下达命令的软件啊都可能会才能产生这种错误`收到消息诸如:Dos系统后输入输入了非法经营的下达命令或参数中AutoCAD输入了错误的下命令格式文件其他字符MySQL先执行了出现错误语法知识的可以查询或全面处理显示数据下达命令程序编译其他程序可以使用了出现了错误的编译宏定义法等......根据不使用环境有没,具体看分析什么发出命令是否是有语法错误,是否需要是操作系统允许的新的命令,和下命令后的参数的设置文件格式数量不有无对的、准确,才有纠正有一种这类错误的无法根除。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。