一条sql语句是如何执行的?
1.首先进来是连接器,连接器负责跟客户端建立连接,获取权限,维持和管理连接。
连接命令mysql -h
i
p
−
p
ip -p
ip−pport -u$user -p
连接成功后,连接器会到权限表查出你拥有的权限。一个建立好的连接,即使你登录管理员账号修改其权限,也不会影响已存在连接的权限,只有在新建的连接才有新的权限。
可以使用show processlist查看连接状态。
如果长时间没有动作,连接会处于sleep状态。
如果客户端长时间没动静,连接器会自动将他断开。由参数wait_timeout设置,默认8小时。
什么是长连接:
连接成功后,如果客户端持续有请求,则一直使用同一个连接。
什么是短连接:
指每次执行完很少的几次查询就断开连接,下次查询再重新建立一个。
建立连接的过程通常是比较复杂的,建议在使用中要尽量减少建立连接的动作,也就是尽量使用长连接。
2.接下来是分析器,需要知道你要做什么,所以对sql语句做解析。
分析器会先进行词法分析,检测每一个单词,做完词法分析后是语法分析。
语法分析会判断你输入的sql语句是否满足sql语法。
3.优化器,在开始执行之前,还要经过优化器处理
优化器是在表中有多个索引时决定用哪个索引。或者在多表连接时决定表的顺序。
4.执行器,开始执行语句
开始执行之前,会先判断是否对该表有执行查询权限。如果有权限就打开表调用引擎提供的接口。
至此一条sql语句执行完毕。