我有几个表,这些表中的数据将从另一个Live data表中填充(使用OTA- Open Test Architecture从活动表中拉取数据)。现在,我必须定期(一天3到4次)更新表中的数据。
现在我的问题是,做这件事的最佳方法是什么?如果我必须更新我经常使用的表,我的计划是删除当前数据并从Live tables更新它,但是当有人在更新数据时访问前端时,他们要么没有结果,要么得到错误的结果。那么,我们如何才能做到这一点而不影响前端,同时仍然更新表中的数据?
我使用的是Java/JSP/Hibernate/Scriptom/Groovy和Oracle DB。
附言:我对所有这些东西都是新手,所以如果这不是正确的方法,请纠正我。访问Live DB对我来说不是一个选择。我们将不会被授予访问动态数据表的权限。如果我有拉数据使用OTA和显示直接在我的前端,它将真的很慢。
发布于 2013-05-27 03:11:26
所有Oracle事务至少具有READ COMMITTED isolation level。这意味着,在提交之前,事务的影响对其他事务是不可见的。因此,只需将所有必要的操作封装在一个单个事务中,其他事务在您提交之前是看不到结果的(此时结果不再是部分的)。
除此之外,写入器永远不会阻塞读取器,因此其他客户端将能够继续读取旧版本的数据,而您的事务仍在生成新数据。
顺便说一句,Oracle还支持SERIALIZABLE隔离级别,这可能与您的需求更相关-它将允许您在读取实时表时获得数据库的“及时快照”。
https://stackoverflow.com/questions/16746976
复制相似问题