数据库读写分离是希望数据库修改操作不影响数据库查询读效率。
那么问题来了
1:如果不进行读写分离,也是可以同时进行修改跟查询操作的吧
2:如果进行了读写分离,同时进行查询操作跟修改操作,那么这个查询操作不会出现脏读现象吗。
只能帮你到这了https://blog.csdn.net/per_son/article/details/53008312
写也是要先读才能写,读写分离是指并发量大的情况,大量的读,如报表,要耗时,会影响要其他的写操作,所以要分离出大量的读操作。
补充一点啊,其实脏读这个概念,用在你上面的业务场景中,是不恰当的。
脏读(事务A尚未提交的数据,被B事务读到了,就叫脏读)
张无忌账户余额为0。
A事务(张无忌存款事务):更新张无忌账户余额为100元,但尚未提交
B事务(张无忌女朋友去取款的事务),读取到张无忌存款操作尚未提交的数据(账户余额有100元,张无忌女朋友成功取款)
再说一下, 其实你的意思是: 写库的数据还没同步到从库来,这个时候从库查询的数据是变化之前的,数据不一致了。
问题的本质是: t这个时刻,我的查询得到的数据,是否是T时刻真正的数据,如果读取的是T时刻早一点时间的数据,就是你说的那个“脏读”。
那其实又回到了事务隔离的问题,如果写和读是同一个业务逻辑的代码,你不可能不知道你写的是啥。
如果写的逻辑和读的逻辑不是同一个业务逻辑,就算是同一个数据库,难道不会发生你说的那个"脏读"场景么?
比如:你在13:01:001成功查询到数据,然后处理。 我在13:01:002插入数据了,你读取的数据也是我变更之前的。
和读写分离的问题的唯一区别在于:没有读写分离的时候,你在13:01:001成功查询到数据,确实就是13:01:001的时候的数据状态。
有读写分离的时候,如果发生数据同步延迟,你在13:01:001成功查询到数据,可能是数据库里面13:00:000的数据。
这种问题的解决,感觉应该是柔性事务或者逻辑层面需要控制的吧。
我也是文科生小白一枚,纯属乱说,欢迎指正。