作为一名 Java开发人员,写 SQL 语句是常有的事,但是你知道 SQL 语句背后的处理逻辑吗?比如下面这条 SQL 语句:
select * from user where id=1
执行完这条语句后,我们就会得到 id 为 1 的用户信息。那么对于这一条 SQL 语句,MySQL服务器做了哪些处理呢?这篇文章我们就一起打卡 MySQL 数据库中对 SQL 语句的处理逻辑。
了解 MySQL 数据库的 SQL 语句内部处理逻辑有什么好处?当我们碰到 MySQL 的一些异常或者问题时,就能够直戳本质,更为快速地定位并解决问题。
想要更好的了解 SQL 语句的内部处理逻辑,我们可以先看 MySQL 的基本架构图,这样我们可以站在更高的角度去俯瞰 MySQL 数据库,MySQL 的基本架构示意图如下:
从图中,我们可以清晰的看出 MySQL 的架构和各个模块以及 SQL 语句的执行过程,MySQL 数据库整体可以分为 Server 层和存储引擎层两部分,其中 Server 层是共有的,而存储引擎层则是可以以插件的形式进行扩展。一条 SQL 语句大概会经历链接管理、解析与优化、最后到存储引擎,这三个模块。接下来我们就来聊一聊这三个模块。
连接管理
连接管理是 SQL 语句执行过程中碰到的第一关,链接管理就像一扇大门一样,控制着客户端与 Server 服务端的交互,连接管理主要工作是客户端的身份认证和连接线程