使用MySQL来进行查询,当输入一条查询语句会发生什么?
发布时间:2024年01月10日
??
当我们使用MySQL作为数据库的时候,输入从客户端输入一条查询语句select * from xxx where (条件)
时
- 建立连接
首先我们是在客户端输入查询语句的,输入完查询语句以后,客户端需要将查询语句发送给服务端进行查询,这个时候就需要进行通信的连接了。当客户端和服务端建立好连接以后,会专门有一个线程处理这个客户端的交互。在连接的时候,客户端需要带上主机信息,用户名,密码等等,服务端会对其进行认证
如果认证失败就会拒绝连接,认证成功就进行下一步操作了 - 查询缓存
MySQL服务端拿着文本请求,也就是查询语句,首先去缓存里面查看有没有相应的结构,如果有的话就直接返回结果,如果没有的话就进行下一步操作。
- 对于缓存来说,只有两条完全相同的查询语句才会返回缓存的结果,如果查询语句有一点不同,那么就不会命中缓存,而是执行下一步操作。
- 由于是缓存,所以MySQL会监控表里面的相关数据,如果在表里面有新增,删除,更新操作, 那么缓存也会被删除
- 语法解析
既然连接也连接好了,缓存也没有命中到,那么就需要到存储引擎去查找相应的信息了。
在语法解析里面,要将文本请求进行解析,通过一通解析,判断sql语句的语法是否正确,然后将sql语句中的信息提取出来,要查询哪一张表,要查询哪一列,要搜索条件是什么。 - 查询优化
虽然我们已经写好了sql,但是在MySQL内部还是会帮助我们进行优化的,比如将外连接转为内连接等等,优化完成以后会生成一个执行计划,在计划中,我们可以看到走什么索引等等,表的连接顺序是怎么样的 - 查询相应的存储引擎
截止到查询优化完成时,都还没有真正的到查询数据库,最后我们需要将生成的执行计划交给我们指定的存储引擎,去查询我们想要的结果。真正的数据都是存储在存储引擎里面的,MySQL中有关数据的真正操作都时在存储引擎里面完成的。
我们把不涉及到操作数据的部分称作MySQL server功能,把操作数据的部分称作存储引擎功能,存储引擎有各种API供MySQL server进行调用,MySQL server只需要完成自己的任务以后调用存储引擎的API就能将相应的结果返回给客户端了
文章来源:https://blog.csdn.net/Superkom666/article/details/135506613
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:chenni525@qq.com进行投诉反馈,一经查实,立即删除!