现在有2个张表,现在的处理逻辑是先往1张表的插入数据,然后再查询出插入的数据再更新到另一张表。
这样操作的原因是担心如果直接更新另一张表的话会不会数据量大了导致更新速度慢,没有完全更新导致数据丢失。我这样操作是不是多此一举呢?
现在有2个张表,现在的处理逻辑是先往1张表的插入数据,然后再查询出插入的数据再更新到另一张表。
这样操作的原因是担心如果直接更新另一张表的话会不会数据量大了导致更新速度慢,没有完全更新导致数据丢失。我这样操作是不是多此一举呢?
不知道会不会导致数据丢失,但有个脑洞,在多线程并发的情况下,很有可能出现后来的数据覆盖前面的数据.即便是先插入一张表中,在多线程中也可能出现后来的先插入的情况吧.
所以建议楼主开启mysql的事务功能,具体的可以看下这个问题
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
3 回答1.2k 阅读✓ 已解决
2 回答2k 阅读
3 回答2k 阅读
你这个应用场景很像是:
用一个成语形容这种行为:“慌不择路”
你有没有想过,既然你担心用户余额修改时出问题,那么你也同样要担心用户帐变表插入出问题,那是不是还要另一个表来保证帐变表呢?那另一个表谁来保证呢?
其实,你应该知道正确的解决办法。而不是用两个不安全的办法来凑成1个安全的办法。你这样做,非但没有得到1个安全的办法,反而得到了两个不安全的办法。
正确的办法是,直接修改用户余额表,并且加上排它锁。例如: