java - 在 Java 中进行 SELECT 和比较或 DELETE 和 INSERT 更有效

标签 java database spring postgresql jpa

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

或者

  • 每次都删除全部并插入全部。
  • 选项 1 可能会减少很多事务,保证对所有记录进行 SELECT,因为我们正在比较,但可能不会有很多 UPDATE,因为我预计数据不会发生太大变化。但它的缺点是对所有记录进行比较以检测更改

    我计划使用 Spring Boot、JPA 层以及可能的 postgres 来完成此操作

    最佳答案

    简短的回答是“这取决于。测试并查看适合您的用例。”

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

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

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

    关于java - 在 Java 中进行 SELECT 和比较或 DELETE 和 INSERT 更有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47061251/

    相关文章:

    ruby-on-rails - 可以将hadoop用作Rails应用程序上的ruby的数据库/后端吗?

    MySQL:如何避免用户看到我有其他数据库并授予对一个数据库上的一个 View 的选择访问权限?

    java - 使用 org.springframework.jdbc.datasource.init.ScriptUtils 在 unix 中执行一个 .sql 文件

    spring - 在 Spring JPA 中保存实体之前的业务逻辑

    java - 将 3D 点投影到 2D 屏幕坐标

    java - 如何检索联系人的电话号码(Android)?

    python - 根据另一个字段的值在 Django 模型上添加约束

    spring - Primefaces fileUpload 不起作用,FileUploadFilter 调用两次

    java - 沃尔玛邮政 API 的变化

    java - j2me - 比较 2 个日期