【问题标题】:More efficient to do SELECT and compare in Java or DELETE and INSERT在 Java 或 DELETE 和 INSERT 中执行 SELECT 和比较更有效
【发布时间】:2018-04-14 03:33:08
【问题描述】:

我正在使用 REST API 从服务中获取数据。我转换这些数据并将其存储在数据库中。我必须每隔 15 分钟做一次,然后确保这个数据库有最新的信息。 我在 Java 程序中执行此操作。我想知道在查询完所有数据之后是否会更好 1. SELECT 语句并比较与转换后的数据并进行更新(删除所有相关记录到已更改的内容并插入新的)

  1. 每次都删除并全部插入。

选项 1 可能会减少很多事务,保证 SELECT 因为我们正在比较所有记录,但可能不会有很多 UPDATE,因为我不希望数据发生太大变化。但它有对所有记录进行比较以检测变化的缺点

我计划使用 Spring Boot、JPA 层和可能的 postgres 来执行此操作

【问题讨论】:

  • Insert with on conflict 也给出了解决方案,不知道任何基准
  • 预期的数据量是多少?
  • SELECT 是否可以包含 WHERE 子句来获取需要更新的记录?

标签: java database spring postgresql jpa


【解决方案1】:

简短的回答是“视情况而定。测试并查看您的用例。”

更长的答案:这感觉像是预优化。预优化的一般反应是“不要”。尤其是在这样的数据库领域中,在一种情况下最好的东西在另一种情况下可能会很糟糕。有许多因素,包括(但不限于)架构、索引、HDD 备份速度、并发性、数据量、网络速度、延迟等等:

  1. 首先,让它工作
  2. 找出问题所在 → 获取指标
  3. 根据该指标衡量
  4. 进行任何明显或必要的更改
  5. 根据需要重复 1 到 4

我要问你的第一个问题是“better 是什么意思?”一旦你定义了这一点,前进的道路可能会变得更加清晰。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 2020-06-15
    相关资源
    最近更新 更多