使用Java编写批处理作业,每隔几分钟就会截断并在Oracle数据库中加载某些表。根据表中的数据在网页上生成报告。我想知道在数据加载过程发生时不会影响报告查询部分的好方法,这样用户就不会得到一些和/或没有数据。
答案 0 :(得分:3)
如果您在单个事务中处理所有SQL语句,则始终会从外部看到有效状态。请注意 TRUNCATE 在事务中不起作用,因此您必须使用 DELETE 。虽然这可以保证在表中始终拥有合理的数据,但它需要更大的回滚段并且速度会慢得多。
答案 1 :(得分:2)
你可以有2个表和一个元表,它跟踪哪个表是用于查询的主表。您的批处理作业将截断并加载其中一个表,并且您可以在加载完成后切换主表。所以查询应用程序现在将获取最新数据,您现在可以在另一个表中加载
答案 2 :(得分:1)
我要做的是在数据库表中设置一个标志,指示更新正在进行,并让报告查找该标志并显示相应的消息并等待更新完成。更新完成后,清除标记。