select的工作原理
套接字(socket):
-
是一个编程接口,允许位于不同主机(甚至同一主机上的不同进程)之间的进程进行双向通信
-
套接字可以用来发送和接收数据,实现不同计算机或进程之间的网络通信
-
在网络分层模型中,套接字通常位于应用层和传输层之间是一个抽象层,提供应用程序与网络协议(如TCP/IP)之间的接口
MySQL工作模型结构为C/S 架构,客户端/服务端架构
server层
-
连接器
-
消耗网络资源,负责建立网络连接 ,提供连接协议(unix 套接字/网络 socket)
-
加载授权表信息,进行连接用户与密码信息验证
-
创建提供连接线程(即与数据库服务连接的类似tty信息)
-
show processlist; # 查看连接会话线程 max_connections=XXXX; # 配置项会影响最大连接线程数量 (默认151)
-
-
-
分析器
-
优化器
-
解析预处理:生成所有查询数据方法
-
优化选择: 选择最合理查询数据方法最佳算法, 选择IO、CPU、MEM等代价成本最低的方法,该过程也可以人为干预
-
执行计划: 最终得出语句的执行计划 ,利用索引调取数据
-
-
执行器
-
执行器会根据执行计划,决定是使用索引、扫描全表、还是通过某种连接算法来处理数据
-
如果有多个表的联接,执行器会根据优化器的决定选择最优的联结算法,如嵌套循环联接、哈希联接…
-
获取磁盘中存储位置-段区页数据存储位置
-
engine层
负责和磁盘进行数据交互,决定数据从哪个段调取,再判断从段中的哪个区调取,再判断从区中的哪个页调取
- 段是包含多个区的更高层次的结构,负责逻辑上组织表和索引数据
- 区是由多个页组成的,通常包含 64 个页。一个页等于1MB
- 页是最小的存储单位,通常是 16KB一个数据页