文章目录
MySQL基础
1、MySQL执行流程
MySQL架构
MySQL的架构共分为两层:Server层和存储引擎层
- **Server层负责建立连接、执行和执行SQL。**MySQL大多数的核心功能模块都在这里实现,主要包括连接器、查询缓存、解析器、预处理器、优化器、执行器等。另外,所有的内置函数和所有的跨存储引擎的功能都在Server层实现。
- **存储引擎层负责数据的存储和提取。**支持InnoDB、MyISAM、Memory等多个存储引擎,不同的存储引擎共用一个Server层。常用的存储引擎是InnoDB。索引数据结构就是由存储引擎层实现的,不同的存储引擎支持的索引类型也不相同。InnoDB支持的索引类型是B+树,在数据表中创建的主键索引和二级索引默认使用的是B+树索引。
SQL查询语句的执行流程
-
连接器
# -h 指定 MySQL 服务得 IP 地址,如果是连接本地的 MySQL服务,可以不用这个参数; # -u 指定用户名,管理员角色名为 root; # -p 指定密码,如果命令行中不填写密码(为了密码安全,建议不要在命令行写密码),就需要在交互对话里面输入密码 mysql -h$ip -u$user -p
连接的过程需要经过TCP三次握手(MySQL基于TCP协议进行传输)
执行
show processlist
命令可以查看当前的MySQL服务被多少个客户端连接,空闲连接的最大空闲时长由wait_timeout
参数控制,默认为 8 小时手动断开连接使用
kill connection + id
命令MySQL服务支持的最大连接数由
max_connection
参数控制MySQL的连接有短连接和长连接(类似HTTP):短连接(连接、执行、断开),长连接(连接、执行、执行…、断开)。长连接可以减少连接和断开连接的过程,但是会导致占用内存增多。有两种解决方式:① 定期断开长连接;② 客户端主动重置连接。
-
查询缓存
MySQL服务收到命令后会解析SQL的第一个字段,如果是查询语句(select