1.整体架构图

下边是MySQL的整体架构。
MySQL学习(一)-- MySQL整体架构 - 图1

2. 数据库连接池

两个数据库连接池。
左边应用中的数据库连接池就是使用Druid等工具创建,用于解决多个线程并发以及连接频繁创建的问题。

右边的数据库连接池,即MySQL数据库中连接池,是为了维护与系统之间的多个连接,所以MySQL 架构体系中的第一个环节就是连接池。

程序在经过账号和密码校验后,建立起多个连接缓存在池子中,当然此过程MySQL也会缓存一些连接。

接着用户执行语句,程序会从连接池中拿出一个连接,通过socket 将SQL语句发送给数据库,这就完成了第一阶段。

3. 处理SQL

当SQL语句发过来时,将会由一个线程处理这条SQL语句。

该线程会调用SQL接口来执行SQL 语句,在SQL接口中首先需要对语句进行解析,即SQL解析。
比如对于我们的update 语句update users set name='xxx' where id=10,会拆解成以下几个部分。

  1. 要从”users”表里查询数据
  2. 查询”id” 字段值等于10 的那行数据
  3. 对查出来的那行数据,修改其name字段为’xxx’

接着会使用查询优化器(Optimizer)来选择一个最优的查询路径。
比如update 的语句,既可以先找出”users”表中id=10 的记录,然后得到”name”的字段就可以了,也可以先得到所有数据的name字段,然后过滤出id=10的,最后进行name字段的修改。显然第一种策略好一点。

4. 调用存储引擎接口,真正执行SQL语句

最后一步执行器会调用储引擎的接口,真正执行SQL语句。这个过程中执行器会根据生成的执行计划,然后不停的调用存储引擎的各种接口去完成SQL语句的执行计划,也就是更新你的数据。
常见的存储引擎有InnoDB、MyISAM、Memory等。

5. 参考