【问题标题】:Database Loading batch job Java数据库加载批处理作业 Java
【发布时间】:2011-10-07 05:40:29
【问题描述】:

有一个用 Java 编写的批处理作业,它每隔几分钟就会截断并加载 Oracle 数据库中的某个表。有根据表格中的数据在网页上生成的报告。我想知道一种在数据加载过程发生时不影响报告查询部分的好方法,这样用户就不会得到一些数据和/或没有数据。

【问题讨论】:

    标签: java oracle jsp jdbc


    【解决方案1】:

    如果您在单个事务中处理所有 SQL 语句,那么从外部看到的状态总是有效的。请注意,TRUNCATE 在事务中不起作用,因此您必须使用 DELETE。虽然这可以保证您的表中始终有合理的数据,但它需要更大的回滚段并且会相当慢。

    【讨论】:

    • 很高兴提到 TRUNCATE 和 DELETE 之间的权衡。
    【解决方案2】:

    您可以有 2 个表和一个元表,用于跟踪哪个表是用于查询的主表。您的批处理作业将截断并加载其中一个表,加载完成后您可以切换主表。因此查询应用程序现在将获取最新数据,您现在可以在另一个表中加载

    【讨论】:

      【解决方案3】:

      我要做的是在数据库表中设置一个标志以指示更新正在进行中,并让报告查找该标志并显示适当的消息并等待更新完成。更新完成后清除标志。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-08
        • 1970-01-01
        • 1970-01-01
        • 2013-06-14
        • 2020-12-07
        • 1970-01-01
        • 2019-11-16
        • 1970-01-01
        相关资源
        最近更新 更多