前言
SQL作为Web开发是永远离开不的一个话题,天天写SQL,可是你知道一个SQL是如何执行的吗?
select name from user where id = 1;
上面是一个简单的查询语句,交给数据库去执行,然后返回name。看起来很简单,可是内部的执行过程却很多人都不知道。
今天就把MySQL拆开看看,看一下它究竟是怎么工作的。
SQL基本架构
从上图可以看出,MySQL分为Server
层和存储引擎层
Server层
连接器
连接器主要是与客户端建立连接, 包含本地socket和大多数基于客户端/服务端工具实现的类似于tcp/ip的通信。 连接成功之后会同时校验用户的权限,等相关安全方案。如我们常用的建立连接方式
mysql -h ip -P 3306 -u root -p
连接是可以在-p后面输入密码,但是考虑到安全问题 不建议这样操作,-P 后是端口号,-p 是密码。注意大小写。
登录成功之后,会校验当然登录账号的权限。后续所有的数据库操作都被当前权限所限制。因此,管理员修改用户权限时,不会立即生效,需要重新连接才会生效。
MySQL默认情况下,当一个链接空闲超过8(60 * 60 * 8)小时之后会自动断开连接。但是连接池则以为该被断开的连接依然有效。 这个时候如果客户端代码发送请求时,连接池会把已