gpt4 book ai didi

sql - oracle中可配置的自动提交

转载 作者:行者123 更新时间:2023-12-02 05:26:13 24 4
gpt4 key购买 nike

oracle 中是否有用于自动提交的内置功能?就像如果我想更新一百万行,并且我想将自动提交设置为 1000 行或 2000 行,我必须在某处进行配置。
它将在每 1000 或 2000 行之后使用自动提交循环更新百万行。此功能在 sqlloader 中可用。我想知道 oracle 中是否也有类似的功能。

最佳答案

没有。您不能要求 Oracle 递增地提交单个 SQL 语句正在执行的工作。这将违反 ACID 合规性的原子性部分,因此对于关系数据库来说,这将是一件非常糟糕的事情。这样做意味着如果数据库失败或者语句在处理 N 行后失败,您将无法知道处理了哪 N 行。这样做意味着其他用户可能会看到部分完整的数据,从而导致他们的报告不正确,并且他们的查询可能会返回误导性结果。

当然,您可以编写自己的自定义逻辑来批量更新行。然而,这通常是一个坏主意。运行正在进行临时提交的进程将花费更长的时间,可能更长。它将需要编写代码以确保该过程是可重入的(也就是说,它可以在服务器发生故障时从中断的地方继续,而无需尝试重​​新更新已经更新和提交的行或在至少不要将数据更新为不同的值。这将导致更新在服务器上生成更多的 UNDOREDO。这将要求每个使用数据的进程意识到他们可能在处理 UPDATE 语句的过程中读取它。这增加了 ORA-01555 错误的风险。通常不需要临时提交——缺点是非常,很少值得。

关于sql - oracle中可配置的自动提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13060533/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com