MySQL学习:一条SQL语句的执行过程

最近在学习MySQL的一些底层知识,光会使用数据库是远远不够的,在面试过程中,这些底层核心知识更受面试官欢迎。学习了MySQL实战45讲,写的非常好,特此做一些笔记。
本博客主要是讲一条SQL语句的执行过程,主要涉及的是两方面知识:一是查询语句涉及的基础架构;二是更新语句涉及的日志系统。

一、一条SQL查询语句是怎么执行的(基础架构)

首先,需要了解一下MySQL的逻辑架构,当执行一条SQL语句时,我们知道它的执行过程,可以对MySQL有更深入的了解,在出现异常,错误的时候,可以更快速的定位问题所在。
下面是MySQL的简单架构示意图,从图中可以看到一条SQL语句的执行和MySQL之间的关系。
在这里插入图片描述注:图片源自林晓斌老师(下同),非常清晰,在此借用。

MySQL主要分为Server层和存储引擎层
(1)Server层包含连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL大多核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等)。所有跨存储引擎的功能都在这一层,如存储转发,视图,触发器等。
(2)存储引擎层负责数据的存储和提取,其架构是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始成为了默认存储引擎。(你也可以选择存储引擎,来指定内存引擎创建表)
从图中可以看出,不同存储引擎共用一个Server层,从连接器到执行器。下面介绍一下Server层的各个功能。

1)连接器

连接器负责跟客户端建立连接、获取权限、维持和管理连接。代码命令如下:

mysql -h$ip -P$port -u$user -p

输完命令之后,需要在交互对话里面输入密码,不建议直接p后接密码。
连接命令中的 mysql 是客户端工具,用来跟服务端建立连接。在完成经典的 TCP 握手后,连接器就要开始认证你的身份,这个时候用的就是你输入的用户名和密码。

连接完成后,如果你没有后续的动作,这个连接就处于空闲状态。客户端如果太长时间没动静,连接器就会自动将它断开。这个时间是由参数 wait_timeout 控制的,默认值是 8 小时。如果在连接被断开之后,客户端再次发送请求的话,就会收到一个错误提醒: Lost connection to MySQL server during query。这时候如果要继续,就需要重连,然后再执行请求了。

下面讲一下数据库的长连接和短连接:

  1. 长连接是指连接成功后,如果客户端持续有请求,则一直使用同一个连接。
  2. 短连接则是指每次执行完很少的几次查询就断开连接,下次查询再重新建立一个。

建立连接的过程比较复杂,建议使用长连接,但使用长连接,MySQL的占用内存涨的很快,因为MySQ

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值