【问题标题】:Populate database table on a frequent basis using JPA使用 JPA 频繁地填充数据库表
【发布时间】:2013-11-12 22:50:37
【问题描述】:

我的 Java 应用程序的一个功能是非常频繁地(几乎每 5 分钟)读取和解析 xml 文件并填充数据库表。我已经创建了一个 cron 作业来做到这一点。大多数列的值保持不变,但对于某些列,值可能会经常更新。我想知道最有效的方法是什么: 1)每次删除表并重新创建它或 2)更新表数据,特别是源文件中出现更改的列。 每次解析和持久化的行数约为40000-50000。 我假设每次运行 cron 作业时需要更新大约 2000-3000 行。 我正在使用 JPA 将数据持久化到 mysql 服务器,到目前为止我已经选择了第一个选项。 显然,对于这两个选项,作业将作为单个事务执行。

任何想法哪个更好,可能有任何优化建议?

【问题讨论】:

  • XML 中的每个条目是否都有唯一的标识符或业务键,可用于将其与数据库行匹配?
  • 是的,它有一个唯一的 ID
  • 我的建议是实施您想到的两个或三个解决方案,如果您真的希望这个解决方案更快,请测量其中一个是最快的。如果您只是希望它足够快,那么实施一个,并测量它是否足够快。如果您在事务期间读取许多行,请注意一级缓存的大小。您可能需要读取和更新成批的行,然后在下一批之前清除持久性上下文。
  • @JB Nizet 你提到的尺寸是一个好点。刚刚发现一次保存所有行需要很长时间,所以我将把它分成更小的批处理运行并刷新每次运行
  • 您是否考虑过非 java 选项?喜欢也许加载 XML:dev.mysql.com/doc/refman/5.7/en/load-xml.html

标签: java mysql database jpa


【解决方案1】:

我建议使用比 cron 更复杂的方法来安排您的作业。例如,Quartz

【讨论】:

  • 你不能通过封面来判断一本书。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-23
  • 1970-01-01
  • 2017-03-18
  • 1970-01-01
  • 2020-07-04
  • 2021-07-06
  • 1970-01-01
相关资源
最近更新 更多