生产接入mycat后数据库查询耗时变久

1.现象:生产准备多活项目,进行一阶段切入mycat时候发现耗时变长。
在这里插入图片描述
生产上接入mycat后接口裸耗时增加超过20%;
进一步分析之前mycat未接入对比的耗时
在这里插入图片描述
在这里插入图片描述
通过监控发现各个接口中调用dao层查询的地方耗时都有增加其中有一个增加了11ms
在这里插入图片描述
后来发现这是一个batchupdate的查询。经过压测发现查询数量增多时延迟变长。
分析如果是mycat解析问题延时差别不该有这么大这么大的延时更像是多次网络开销造成。
2.本地开始部署测试环境使用TESTNG验证结论,中间有使用到抓包工具ethereal和切面打印dao层耗时。
第一次使用直连DB2和对比接入mycat,batchupdate七个语句
在这里插入图片描述
在这里插入图片描述
问题复现之后,本地debug代码当执行到batchupdat时候开始抓包,执行结束之后停止抓包分析问题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
发现mycat开启预编译先把sql语句传过去之后,之后每次只传送一行数据进行更新然后等待数据库回复,进行了七次交互。
对比DB2
在这里插入图片描述
发送语句之后直接一次性发送了所有的参数,如果超过MTU(网络最大传送单元1500字节)才进行拆包。
3.进一步研究发现开启rewritedbatchstatement=true时候mycat并不支持
在这里插入图片描述
研究分析源码发现mysql驱动开启参数之后会向mycat发送命令是否支持批处理
在这里插入图片描述
发现这次通信过程中mycat回复了unknown command!
所以mycat并不支持批处理。需要在批处理使用多的地方多注意!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值