我正在使用 REST API 从服务获取数据。我转换这些数据并将其存储在数据库中。我必须每隔一段时间(15 分钟)执行此操作,然后确保该数据库包含最新信息。 我正在 Java 程序中执行此操作。我想知道在查询完所有数据后,这样做是否会更好 1. SELECT 语句并比较转换后的数据并进行更新(删除所有与更改内容相关的记录并插入新记录)
或者
- 每次都删除全部并插入全部。
选项 1 可能会减少很多事务,保证对所有记录进行 SELECT,因为我们正在比较,但可能不会有很多 UPDATE,因为我预计数据不会发生太大变化。但它的缺点是对所有记录进行比较以检测更改
我计划使用 Spring Boot、JPA 层以及可能的 postgres 来完成此操作
最佳答案
简短的回答是“这取决于。测试并查看适合您的用例。”
更长的答案:这感觉就像预优化。对于预优化的普遍 react 是“不要”。尤其是在像这样的数据库领域,在一种情况下最好的东西在另一种情况下可能会很糟糕。有很多因素,包括(但不限于)架构、索引、HDD 支持速度、并发性、数据量、网络速度、延迟等:
- 首先,让它发挥作用
- 找出问题所在 → 获取指标
- 根据该指标进行衡量
- 进行任何明显或必要的更改
- 根据需要重复 1 到 4
我要问你的第一个问题是“更好是什么意思?”一旦你定义了这一点,前进的道路可能会变得更加清晰。
关于java - 在 Java 中进行 SELECT 和比较或 DELETE 和 INSERT 更有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47061251/