SQL 查询语句执行原理


分类: 编程
评论: 0

SQL 查询语句执行原理



分类: 编程
评论: 0

逻辑架构

MySQL 大致可分为 Server 层和存储引擎层两部分

Server 包含连接器、查询缓存、分析器、优化器、执行器等

连接器:
- 管理连接,权限验证
查询缓存
-
分析器
- 词法分析,语法分析
优化器
- 执行计划生成,索引选择
执行器
- 操作引擎,返回结果

存储引擎 负责数据的存储和获取,提供读取接口,其架构模式是插件式

创建表的时候,在 create table 中使用 engine=引擎 设置存储引擎

不同的引擎共用 Server 层,类是 PDO

语句的执行过程

SELECT * FROM table_name;

连接器

首先会通过连接器,连接数据库,其负责跟客户端建立连接,获取权限,维持和管理连接

连接命令:

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

通过上面的命令连接

建立连接之后,即使对登陆用户修改了权限,那也只会在新连接生效

建立连接后,如果没有后续操作,那么该连接会处于空闲状态

查看进程列表

mysql>show processlist;

若太长时间没有操作,连接器会自动断开,这个时间由 wait_timeout 控制,默认值是 8 小时

连接分两种方式:

建立连接的过程是比较复杂的,所以建立连接的时候,尽量建立长连接

但是长连接在占用内存会特别快

解决方法

思考

  1. 为何在分析器之后会走查询缓存?难道不应该是执行器之后将结果缓存吗?