mysql client my_net_write分析——陈良允
来源:互联网 发布:java自带的md5加密 编辑:程序博客网 时间:2024/05/29 10:20
my_net_write是mysql客户端向服务端写mysql包时候用到的函数,大致流程如下:
...忽略N行....
while (len >= MAX_PACKET_LENGTH)//len代表要写出的包长,MAX_PACKET_LENGTH=16M,其中16M代表一个mysql数据包最大长度。这里表示如果包超过mysql包最大长//度的话,必须对这个包进行分包处理。
{
const ulong z_size = MAX_PACKET_LENGTH;
int3store(buff, z_size);
buff[3]= (uchar) net->pkt_nr++;//每个包都有一个序号,包括分包也是独立序号,每次都增加,直到新的command清零。
if (net_write_buff(net, buff, NET_HEADER_SIZE) ||//这里先写头,再写body,为何不一起写出去?mysql对数据包这块做了优////化,不是每次写出都马上刷到缓存区了,客户端自己维护了一个buffer只有如果这个 buffer还有空间,那么mysql可能选择先不写出这个包,等后面的包写人后一起刷出。
net_write_buff(net, packet, z_size))
{
MYSQL_NET_WRITE_DONE(1);
return 1;
}
packet += z_size;
len-= z_size;
}
/* Write last packet *//对于不分包的包 直接写出
int3store(buff,len);
buff[3]= (uchar) net->pkt_nr++;
if (net_write_buff(net, buff, NET_HEADER_SIZE))
{
MYSQL_NET_WRITE_DONE(1);
return 1;
}
rc= test(net_write_buff(net,packet,len));
MYSQL_NET_WRITE_DONE(rc);
return rc;
- mysql client my_net_write分析——陈良允
- Eclipse Paho Java Client分析——整体架构分析
- HDFS源码分析——RPC Client实现
- HandlerSocket client for java——MySql as NoSQL
- Mysql Client
- mysql client
- mysql client
- mysql client
- Android——Tomcat+MySQL+Servlet,实现将Client传入的数据写入MySQL
- Client——Server
- glance-0.1.7 分析(九)—— glance/client.py 客户接口
- Docker源码分析之——Docker Client的启动与命令执行
- zookeeper client分析
- Zookeeper C Client分析
- openstack client代码分析
- MR2 client 代码分析
- zookeeper client分析 ***********************8
- predis client class分析
- 2013.4.7notes
- junit4.11 java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing错误
- gpg96244qs1屏驱动起来了
- C++字符串处理
- ios 面试题
- mysql client my_net_write分析——陈良允
- SPRING MVC控制层传递对象后在JSP页面中的取值方法
- ExtJS时间扩展控件(显示年月日时分秒)
- poj1061欧几里德算法
- 《编程之美》2.12 快速寻找满足条件的两个数(预排序)
- android 本地SharedPreferences存储到使用sqlite数据库存储的转换
- 【转】SQL2005无法启动SQL Server 请求失败或服务未及时响应等问题的解决方案
- 内存分配相关
- 5天学会一种 web 开发框架