postgresql - 使用 Spring-Data 在大量索引表中实现单个频繁更新的列
问题描述
我有一个数据对象,我希望它有一个非常频繁更新的列和一些将被搜索的主要是静态的列。
asset(
id PRIMARY_KEY,
group_id REFERENCES group(id)
last_contact bigint,
name varchar,
type varchar,
version varchar,
....
)
last_contact 列预计会非常频繁地更新,而其他列会更新几次
预期的查询是
通过 id 查找资产
按 last_contact 按组顺序查找资产
按last_contact ...等按名称顺序查找资产
我很难决定这些目标的实施。
我可以看到的选项是
将 last_contact 存储在同一行中
- 最简单的实现,但担心行上的频繁写入
根据资产 ID 将 last_contact 存储在 oneToOne 关系中
- 发现很难在 spring 数据和休眠中实现。
- 不确定这是否是解决此问题的好方法(例如,在此模型中按 last_contact 排序是否可能/有效)
解决方案
如果您正在寻找最佳性能解决方案,它肯定会将其存储在同一个表中作为新列。要考虑的另一件事是,如果您要更新单个列,请@Modifying @Query
在仅更新此字段的存储库中创建您的列。entity.save()
与更新单个列而不是整个实体相比,这将显着提高性能。
推荐阅读
- node.js - 如何在 test-cafe 中使用数据发出 post 请求?
- c# - Web API 使用 C# 向 SQL Server 发布身份验证
- angular - 如何使用 Angular js 在 ionic 4 中显示图像
- angular - angular/cdk 简单拖动不适用于带有 ngFor 的 div
- flutter - 如何仅从 DateTime.now() 中提取时间;
- c - 迭代 C 中的列表时,我是否看到优化错误?
- kubernetes - Metacontroller:如何停止调用同步钩子和资源生成
- reactjs - 组件卸载是否保证为所有后代调用 componentWillUnmount?
- symfony - 教义多重实体管理器数据表创建
- windows - Windows GNU Make 在某些情况下会破坏 POSIX 颜色代码,但为什么呢?