MySQL是如何完成一次数据查询的?这是一个很经典的问题,对于明白数据库执行历程是个不错的劈头。
MySQL执行一条select的历程大致概述如下确定毗邻客户端提议select语句,mysql吸收判断查询语句是否存在于缓存中剖析器做语法剖析和磨练优化器优化语句执行器执行查询,并保留到缓存中详细执行历程首先客户端通过TCP发送毗邻请求到mysql毗邻器,毗邻器会对该请求进行权限验证及毗邻资源分配。确定毗邻后,客户端发送一条select语句,MySQL收到该语句后,通过下令分发器判断其是否是一条select语句。MySQL在开启查询缓存的情形下,会先在查询缓存中查找该SQL是否完全匹配,若是完全匹配,验证当前用户是否具备查询权限,若是权限验证通过,直接返回效果集给客户端,该查询也就完成了。若是不匹配继续向下执行。若是在查询缓存中未匹配乐成,则将语句交给剖析器作语法剖析。MySQL通过剖析语法知道要查的内容。这步会对语法进行磨练,若是语法纰谬就会返回语法错误中止查询。剖析器的事情完成后,将语句转达给预处置器,检查数据表和数据列是否存在,剖析别名看是否存在歧义等语句剖析完成后,MySQL就知道要查的内容了,之后会将语句转达给优化器进行优化(通过索引选择最快的查找方式),并天生执行设计。最后,交给执行器去详细执行该查询语句。执行器最先执行后,会逐渐将数据保留到效果集中,同时会逐步将数据缓存到查询缓存中,最终将效果集返回给客户端。以下是一张MySQL结构图,连系图有助于明白,希望回覆对您有所辅助。
win7系统优化教程,低配置也有高速度?