pb 数据窗口插入数据_前脚刚往数据库插入数据,后脚就查不出来?

线上出现了一个Bug,前脚刚插入的数据,后脚就查不出来。导致了请求的失败, 数据库还可不可信了?

先看看代码流程

这是一个很简单的流程,就是插入了一条数据,然后紧接着select。

insert test (id) values (1);select test where id=1; => 查出来为空

前脚刚插入,而且采用的是自动提交模式,那么insert这条就自动提交了。那为何紧接着查不出来呢?这个是在同一个线程之内啊,不存在时序混乱的问题。这时候,我们就得看看我们的环境了

部署模式

我们先看一看我们的应用部署模式吧。

3b5bcc345d69a413f17727f5ab4c3856.png

我们的应用是通过APP是通过DBProxy去查询数据库的。DBProxy可以有效的管理连接,以及一系列的分析/审计/权限功能,相当好用。
在它们提供的功能里面,有一项功能引起了我的注意,就是透明主从功能。这个功能的描述为:

4c01bfb50e7f282a15bd76cde43fadd4.png

推理

按照启用了这个功能后,我们的sql执行模式应该是这样insert到主库而select到从库。

e66a7ab9eda9876e826e5ce3778052b0.png

这时候只要主从稍微有些延迟,那么select去从库就找不到数据从而引起问题了!

解决方案

首先,我们让DBProxy先下掉这个功能,至于主从负载分离,我们采用了另一个方案。

725a767be00964d3823088f8650d1f56.png

虽然需要修改代码,但比起线上出问题好多了。


关注我,私信回复【资料】即可领取视频中java相关资料以及一份227页最新的bat大厂面试宝典

最后

欢迎大家一起交流,喜欢文章记得关注我点个赞哟,感谢支持!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值