如何更好的解决批次更新?

发布于 2022-09-13 01:25:29 字数 86 浏览 15 评论 0

如某一个功能需要添加N个参与人,当用户频繁更新参与人的时候如(增加或删除参与人),如何处理最高效?
我目前的解决办法是先全部删除,然后有新增一遍。。。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

自此以后,行同陌路 2022-09-20 01:25:29

简单处理的话还是先做diff然后决定删除和新增的部分。此类方法可以封装起来,做业务时还是比较常遇到的。 全删再插入的话部分无改动的操作时间会变动,有些场景下是不想要的。

太傻旳人生 2022-09-20 01:25:29

你好,我来回答一下这个问题哈。
首先,你的先删除再新增的办法肯定是不行的,如果直接把Mysql数据库中的某条数据做直接删除,由于数据库是基于逻辑上的空间分配的,这样的操作久了后,数据库会产生大量的不可用区域造成区域浪费,这种直接删除的方法是不推荐的。
怎么做比较好呢?
一般会采用软删除的办法,比如添加一个字段命名为is_valid,用该字段的取值判断该条数据是否有效。
当用户删除该条记录时将该条记录设置为无效即可(做update操作)。
当用户新增时,首先查询一下目前是否有新增的这一条数据(无论是否有效)。若没有查到,则直接新增(做insert操作),反之则证明存在一条这样的数据但是状态是无效的,那么就将该条信息置为有效(做update操作)。

这样子就可以达到你想要的效果了,并且性能并不会很低(对数据库的操作不要放在循环中去做)。
并且还有一种方法可以达到你的需求,可以参考下面的链接:https://juejin.cn/post/698086...

遇见了你 2022-09-20 01:25:29

这个要看你数据如何组织使用,说穿了就是该类数据在数据存储、读取等过程中的策略。
这里还涉及到数据量的问题,比如虽然你说数据比较多,更新频繁,但这个频繁估计也是有量级的,是按天、按小时、按分钟、按秒,不同的需求,相应的优化策略其实是不一样的。

比如一个很大的(起码几十M字节起的)数据要按秒频繁更新,这个就是比较重的负载,但如果变成几K,负载就轻很多,所以要根据数据特性来选择策略。

对于类似你这样的情况,最终其实用户是希望高效获取最后情况,这样其实安全高效的方法是不停的写入需要的数据,用一个指针类型来指向最新有效数据,这样的好处是比较高效,不容易掉数据,还可以追溯变化历史,不过比较占空间。

大致的过程是:读取数据到内存,在内存中更新,写到数据库新的点,把新的记录点作为有效点,这样的好处是少了删除过程,会快很多。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文