使用Spring Data JPA更新数百万个数据库行

问题描述

我想知道哪个最适合 这是我的实体:

obj.key_c

选项1直接在UserRepository中批量更新:
如果要更新的用户数达到数百万,这是否会影响我的数据库性能

obj.key_a

选项2将按状态获取用户并按如下方式逐一更新:
我很确定这会由于内存使用情况而影响MS的性能

@Entity
@Data
public class User {
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String firstName;
    private String middleName;
    private String lastName;
    private Status status;
    private String statusRemarks;
}

解决方法

绝对选项1。

这两个选项均会读取,修改并写回受影响的数据。

顶部的选项2通过网络读写数据并将其转换为Java对象。

因此它将变慢,甚至可能对数据库造成更高的负载。

如果数据库的负载仍然很高,则应考虑将更新分成较小的更新,例如,一次限制ID范围。