gpt4 book ai didi

sql - 何时提交更改?

转载 作者:行者123 更新时间:2023-12-04 19:24:56 24 4
gpt4 key购买 nike

使用通过 Perl DBI 访问的 Oracle 10g,我有一个表,其中有几千万行每秒更新几次,同时从另一个进程中更频繁地读取。

很快,更新频率将增加一个数量级(可能是两个)。
有人建议每 N 次更新而不是在每次更新后提交将有助于提高性能。

我有几个问题:

  • 这会更快或更慢还是取决于(计划尽快对新负载进行适当的模拟)
  • 为什么它会帮助/阻碍性能。
  • 如果“这取决于……”,取决于什么?
  • 如果它有帮助 N 的最佳值是多少?
  • 为什么当我需要时,我的本地 DBA 不能有一个有用的直接答案? (其实我知道那个答案):-)

  • EDIT:

    @codeslave : Thanks, btw losing uncommited changes is not a problem, I don't delete the original data used for updating till I am sure everything is fine , btw cleaning lady did unplugs the server, TWICE :-)

    Some googling showed it might help because of issue related to rollback segments, but I still don't know a rule of thumb for N every few tens ? hundreds? thousand ?

    @diciu : Great info, I'll definitely look into that.

    最佳答案

    提交会导致 Oracle 将内容写入磁盘 - 即在重做日志文件中,以便在发生电源故障等情况下可以恢复已提交的事务。
    在文件中写入比在内存中写入慢,因此如果在一行中执行许多操作而不是一组合并更新,则提交会更慢。

    在 Oracle 10g 中,有一个异步提交使它更快但不太可靠:https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-6158695.html

    PS 我肯定知道,在我在某个应用程序中看到的场景中,将合并更新的数量从 5K 更改为 50K 会使其速度提高一个数量级(快 10 倍)。

    关于sql - 何时提交更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33204/

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