MySQL协议简单分析】的更多相关文章

 tcpdump -i eth0 -s0  -l -w - port 3306|strings|grep -i -E 'select|update|insert|delete|set' …
索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点.考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录.如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取10^4个页面,如果这10^4个页面在磁盘上随机分布,需要进行10^4次I/O,假设磁盘每次I/O时间为10ms(忽略数据传输时间),则总共需要100s(但实际上要好很多很多).如果对之建立B-Tree索引,则只需要进行log100(10^6)…
首先TCP和IP是两种不同的协议,它们来七层网络模型中分别在不同的层次,IP协议是网络层的协议,TCP是更高一层的传输层的协议,TCP是建立在IP协议之上的,所以一般把TCP和IP连在一起说TCP/IP协议. Windows系统的TCP协议栈的数据包默认是1460字节大小,如果一次传输的数据大于这个长度,会把分割成几个长度都不大于1460字节的TCP数据包,每个数据包都会被赋予一个sequnce number(相当于每个数据包的顺序号,凭这个接收端可以知道数据包的前后顺序) 之后TCP的数据包再…
MySQL协议分析 标签: mysql 2015-02-27 10:22 1807人阅读 评论(1) 收藏 举报  分类: 数据库(19)    目录(?)[+]   1 交互过程 MySQL客户端与服务器的交互主要分为两个阶段:握手认证阶段和命令执行阶段. 1.1 握手认证阶段 握手认证阶段为客户端与服务器建立连接后进行,交互过程如下: 服务器 -> 客户端:握手初始化消息 客户端 -> 服务器:登陆认证消息 服务器 -> 客户端:认证结果消息 1.2 命令执行阶段 客户端认证成功后,…
综述 要实现一个mysql proxy,首先需要做的就是理解并实现mysql通讯协议.这样才能通过proxy架起client到server之间的桥梁. mixer的mysql协议实现主要参考mysql官方的internal manual,并用Wireshark同时进行验证.在实现的过程中,当然踩了很多坑,这里记录一下,算是对协议分析的一个总结. 需要注意的是,mixer并没有支持所有的mysql协议,譬如备份,存储过程等,主要在于精力有限,同时也为了实现简单. 数据类型 mysql协议只有两种基…
MySQL协议分析 议程 协议头 协议类型 网络协议相关函数 NET缓冲 VIO缓冲 MySQL API 协议头 ● 数据变成在网络里传输的数据,需要额外的在头部添加4 个字节的包头. . packet length(3字节), 包体的长度 . packet number(1字节), 从0开始的递增的 ● sql “” 的网络协议是? 协议头 ● packet length三个字节意味着MySQL packet最大16M大于16M则被分包(net_write_command, my_net_wr…
MYSQL Binlog协议分析 此处不讨论建立连接,验证和handshake的交互协议 Binlog协议 一个MYSQL 通信包由包头包体组成 包体根据具体的交互协议有自身的组成结构, 在binlog消息体组成结构如下 +=====================================+ | event  | timestamp         0 : 4    | | header +----------------------------+ |        | type_cod…
MySQL协议分析(2) 此阶段是在压缩传输无加密条件下进行的协议分析 思路 结合Oracle官网的说明和自己用wireshark加python进行数据包分析 步骤 客户端与服务器端是否压缩的协商阶段 压缩传输的数据包格式 数据包解压缩分析过程 压缩协商阶段 首先,用户发起连接数据库的请求,并添加了压缩的参数-C进行传输,此时在网络中TCP建立后,服务器端会给客户端一个Greeting,其中包括了服务器端的MySQL版本.协议版本.支持的能力(其中就包括是否支持压缩)等. 然后,客户端会发送给服…
MySQL协议分析 此阶段的协议分析是在未压缩未加密情况下的协议分析 思路: 结合Oracle官网和自己用wireshark抓的网络数据包进行协议分析 官网说明 mysql包共分为4段,格式如下: 第一段:payload(通常是执行的SQL语句)的长度占3字节: 第二段:序列id占1字节: 第三段:payload类型占1字节: 第四段:payload内容占n字节,n为第一段描述的长度. wireshark抓包分析验证 0000 1a 00 00 00 03 73 65 6c 65 63 74 2…
主人看到navicat和mysql在那嘻嘻哈哈,眉来眼去的,好不快乐,忽然也想自己写个程序,直接去访问Mysql,虽然现在已经有很多现成的中间件可以直接拿来用了,程序只要负责写sql语句就行了,但是主人想要自己通过mysql协议直接和mysql通讯,一窥究竟.于是主人找到Mysql说:亲爱的mysql,我以前和你交流总要通过第三方的驱动在中间传话,总感觉我们之间还有一个隔阂,有些话也不方便说,我现在有些心里话想直接和你交流...你说行吗? mysql说:当然行啊,mysql受宠若惊,要和我打交道…