MYSQL网络协议分,压缩和非压缩。
非压缩:3个字节记录数据长度+1个字节记录包序号+数据
压缩 :3个字节数据长度+1个字节包序号+3个字节数据原始长度+数据
MYSQL处理数据的时候是,先把数据包构造成非压缩协议格式的, 然后 再继续把数据包修改成压缩格式
例1:首先数据肯定大于50个字节,因为小于50字节是不压缩的。
如果 A---B 他是100字节
首先构造成 3字节(记录长度100)+ packet number + 100字节,这就是非压缩了
这时候客户端用了压缩,那么net->buffer 就是 已经存储了构造好的非压缩数据
问题:那这个构造好的非压缩数据,他在修改为压缩数据的时候,已经构造进去的前面4个字节是怎么处理的
me:条件能判断出buffer中是非压缩的
根据数据重新计算:3个字节数据长度+3个字节数据原始长度
原"3个字节记录数据长度"直接丢弃
非压缩:3个字节记录数据长度+1个字节记录包序号+数据
压缩 :3个字节数据长度+1个字节包序号+3个字节数据原始长度+数据
MYSQL处理数据的时候是,先把数据包构造成非压缩协议格式的, 然后 再继续把数据包修改成压缩格式
例1:首先数据肯定大于50个字节,因为小于50字节是不压缩的。
如果 A---B 他是100字节
问题:那这个构造好的非压缩数据,他在修改为压缩数据的时候,已经构造进去的前面4个字节是怎么处理的
me:条件能判断出buffer中是非压缩的
根据数据重新计算:3个字节数据长度+3个字节数据原始长度
原"3个字节记录数据长度"直接丢弃