首页 > 解决方案 > 使用 Spring-Data 在大量索引表中实现单个频繁更新的列

问题描述

我有一个数据对象,我希望它有一个非常频繁更新的列和一些将被搜索的主要是静态的列。

 asset(
    id PRIMARY_KEY,
    group_id REFERENCES group(id)
    last_contact bigint,
    name varchar,
    type varchar,
    version varchar,
    ....

)

last_contact 列预计会非常频繁地更新,而其他列会更新几次

预期的查询是

我很难决定这些目标的实施。

我可以看到的选项是

  1. 将 last_contact 存储在同一行中

    • 最简单的实现,但担心行上的频繁写入
  2. 根据资产 ID 将 last_contact 存储在 oneToOne 关系中

    • 发现很难在 spring 数据和休眠中实现。
    • 不确定这是否是解决此问题的好方法(例如,在此模型中按 last_contact 排序是否可能/有效)

标签: postgresqlhibernatejpaspring-data-jpaspring-data

解决方案


如果您正在寻找最佳性能解决方案,它肯定会将其存储在同一个表中作为新列。要考虑的另一件事是,如果您要更新单个列,请@Modifying @Query在仅更新此字段的存储库中创建您的列。entity.save()与更新单个列而不是整个实体相比,这将显着提高性能。


推荐阅读