0

我有几个表,这些表的数据将从另一个实时数据表中填充(使用 OTA-Open Test Architecture 从实时表中提取数据)。现在我必须定期(一天 3 或 4 次)更新表格中的数据。

现在我的问题是最好的方法是什么?如果我必须定期更新我使用的表,我的计划是删除当前数据并从 Live 表中更新它,但是当有人在更新数据时访问前端时,他们要么没有结果,要么得到错误的结果. 那么我们如何在不影响前端但仍更新表中的数据的情况下做到这一点呢?

我正在使用 Java/JSP/Hibernate/Scriptom/Groovy 和 Oracle DB。

PS:我对所有这些东西都是新手,所以如果这不是正确的方法,请纠正我。访问 Live DB 对我来说不是一种选择。我们将无法访问实时数据表。如果我使用 OTA 提取数据并直接在我的前端显示,它会非常慢。

4

1 回答 1

1

所有 Oracle 事务都至少具有READ COMMITTED隔离级别。这意味着一个事务的影响在它提交之前对其他事务是不可见的。因此,只需将所有必要的操作封装在一个事务中,其他事务在您提交之前不会看到结果(此时结果不再是部分的)。

除此之外,写入器永远不会阻塞读取器,因此其他客户端将能够在您的事务仍在生成新数据时继续读取旧版本的数据。

顺便说一句,Oracle 还支持 SERIALIZABLE 隔离级别,这可能更符合您的需求 - 它可以让您在读取实时表时获得数据库的“时间快照”。

于 2013-05-26T19:11:26.340 回答