MySQL NET包

Technorati 标签: MySQL

 

MySQL在应用层使用了一种NET协议,服务器端监听my.cnf中指定的TCP/IP端口和本地socket。客户端和服务器端的通信都是通过NET包来传送的。

在文件sql/net_serv.cc中定义了相应的API,结构体st_net封装了NET包的格式

NET包长度限制:#define MAX_PACKET_LENGTH (256L*256L*256L-1)

每个NET包包含4字节的头部信息:

3字节:数据包长度

1字节:数据包序列号

当超过数据超过NET包限制时,将会被切分成多个不超过MAX_PACKET_LENGTH的包

MySQL支持数据压缩,使用zlib(zlib/compress.c)。

//

相关函数:

my_bool my_net_init(NET *net, Vio* vio)对一个NET包进行初始化;

my_net_write(NET *net,const uchar *packet,size_t len):将包写到缓冲区中;

my_bool net_flush(NET *net):将缓冲区的数据发送出去;

my_bool net_write_command(NET *net,uchar command,const uchar *header, size_t head_len, const uchar *packet, size_t len)       向服务器端发送一条命令;

ulong my_net_read(NET *net):读取包的数据,如果这个包被分割过,还需要读取多个包来进行重组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值