TCP/IP网络模型
应用层
给用户提供应用功能,如HTTP, DNS
应用层处于用户态,传输层及以下处于内核态
传输层
给应用层提供网络支持,如TCP, UDP
TCP提供稳定、面向连接的网络传输协议
应用层的数据可能会太大,就需要进行拆分,由于数据大小不能超过MSS
此层设计 端口,端口对应应用标记,识别是哪个应用的
因为一个设备会有多个应用传输或者接收数据,用端口区分
网络层
数据传输的媒介,负责将数据从一个设备传输到另一个设备
IP协议,涉及到网络号和主机号,通常是通过子网掩码进行与运算得到
网络号 区分IP属于哪个子网
主机号 区分是子网下哪个主机
路由是进行寻址的,找到目标地址的子网(这以后才会进行主机号判断)
网络接口层
在IP头部加上MAC头部,封装成数据帧
提供链路级别的传输服务,在以太网、wifi底层网络进行数据包发送
MySQL的结构
MySQL的架构主要分为 Server层和存储引擎层
server层负责连接、分析和执行SQL
连接、查询缓存、解析器、预处理器、优化器、执行器
存储引擎层负责数据的存储和提取
涉及到储存引擎的选择,存储引擎的物理结构
连接器
与客户端进行连接,连接过程也需要三次握手进行,基于TCP连接
可以查看连接的客户端,并且存在空闲连接
空闲连接有最大空闲时长;可以进行手动断开
可以设置长连接和短连接
长连接涉及到占用内存
解决方法 可以是定期断开长连接;客户端重置连接
查询缓存
查看缓存是否有value,此处为key-value的结构
如果对表有更新操作,缓存即清理
在MySQL8.0以后没有缓存这一操作
解析器
进行词法和语法解析,搭建语法树
预处理器
判断表和字段是否存在
把*展开成所有的列
优化器
选择索引,负责确定mysql的执行方案
通过explain,查看key是什么
执行器
执行sql语句与存储引擎进行交互
读取记录,返回客户端