gpt4 book ai didi

sql - 我在 Oracle 中提交的频率

转载 作者:太空狗 更新时间:2023-10-30 01:54:59 24 4
gpt4 key购买 nike

我正在从大型 Oracle 数据库中删除大量数据。我遵循的过程是,我删除了一个记录表 A,导致表 B 上的 CASCADE 删除,而表 B 上的其他表上有 CASCADE 删除。所以基本上有几个表与 CASCADE 删除相互关联。

目前,此过程针对表 A 中的许多记录进行迭代,我只在迭代结束时提交(当所有数据都被删除时)。该过程大约需要 30 个小时才能完成。

有人建议我进行常规 COMMIT,即对表 A 的每个记录删除(包括子表中任何后续记录的删除)进行 COMMIT。

我知道定期提交会使撤消日志保持较小的大小,但是定期提交是否有任何性能改进?我会看到完成脚本所需时间的改进吗?

最佳答案

频繁提交不会提高代码的性能。进行大量临时提交可能会迫使您花费更多时间等待同步操作,从而减慢您的代码速度。如果您在中间提交,您可能必须编写相当多的代码以确保您的代码可以完全重新启动。

您是否有 AWR 或 statspack 快照或跟踪文件来显示您实际等待的内容? 30 小时做任何事情似乎都不合理。这会让我强烈怀疑您丢失了一些索引,这些索引导致您的级联删除在每次删除行时都进行全表扫描。修复丢失的索引或执行多行删除,以便您不必频繁地进行全表扫描,这似乎比担心何时提交更改更有可能提高性能。

关于sql - 我在 Oracle 中提交的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23640718/

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