【发布时间】:2013-10-16 19:33:27
【问题描述】:
我正在逐步从 Web 服务中提取记录。我需要将本地表中未由 Web 服务返回的任何记录的状态设置为“已删除”;
我原本打算将完整的记录 ID 列表存储在 PL/SQL 表中,然后基于该表执行单个 UPDATE 语句。
我现在估计记录集的内存使用量约为 615MB。 PL/SQL 表的内存占用与使用全局临时表相比如何?它是否会使用 Oracle 内存的不同部分,例如 PGA 与 SGA?
性能不是主要问题,因为这项夜间作业已经在生产环境中以可接受的时间运行。我不相信添加“已删除”状态片段会增加运行持续时间以影响用户。
【问题讨论】:
-
“性能不是主要问题,因为这是一项夜间工作。” - 这会在未来咬你(当人们早上开始工作时你的夜间工作还没有完成)。
-
我可能应该说我知道这项工作需要多长时间,因为它已经在生产环境中运行。 DELETED 状态位是新的,但我认为它不会增加运行持续时间以影响用户。
-
那么累积这些记录而不是更新它们的原因是什么?他们到达的速度是多少?
-
我将使用 MINUS 查询将状态设置为“已删除”。我不能随着它们的出现而增量地这样做,因为我还没有完整的活动记录集。将任何记录错误地设置为“已删除”,即使只是在工作期间也是如此,在此应用程序中是不可接受的。
标签: oracle memory data-structures plsql