读写分离无效的大坑(新使用数据库读写分离的同学可以参考)

前置条件,自己已经实现了mysql的主从复制和读写分离(atlas或者mycat),会遇到的问题

1.刚修改后的数据,立马查询是可能不一致的,因为数据同步是需要时间的,好多开发人员会忽略这一点

 解决办法:

    (1)开启方法事务,读写分离默认事务操作只会走主库,这里就要考虑到主库的压力问题

    (2)通过代码逻辑尽量避免修改库后立马查询的操作(一般采取这种方式)

2.注意开发框架的事务配置(java 举例),一般我们会在配置文件配置某些约定的方法名字前缀开启不同的事务(或者不开启),但现在随着注解事务的流行,好多开发人员(或者架构师)搭建框架的时候在service类上加上了@Transactional注解,导致整个类都是开启事务的,这样严重影响数据库执行的效率,更重要的是开发人员不重视、或者不知道在查询类的方法上面自己加上@Transactional(propagation=Propagation.NOT_SUPPORTED)就会导致,所有的查询方法实际并没有走从库,导致主库压力过大

 解决办法:根据service方法类型(写多还是读多)来家Transaction的注解,每个方法加自己单独的注解,但不建议,推荐约定不同的方法名前缀控制注解。

 

 

转载于:https://my.oschina.net/haitaohu/blog/2874758

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值