gpt4 book ai didi

sql - DB2 中的选择查询是否需要提交?

转载 作者:行者123 更新时间:2023-12-03 02:45:12 25 4
gpt4 key购买 nike

我有一个供应商报告产品执行查询来提取报告数据,没有插入,没有更新,只是读取数据。

我们的堆大小增加了 3 倍,现在为 1024 4k 页,应用程序将正常运行一周,然后我们将开始看到 DB2 SQL 错误:SQLCODE: -954,SQLSTATE: 57011 指示事务日志是无法满足请求。

这不是报告的大小,因为它们在回收后运行良好。我与另一位 DBA 就此进行了交谈。他认为问题在于 ORACLE 和 DB2 之间的差异,即供应商代码很糟糕并且没有在选择上发出提交。这导致引用无法清理,并在堆中慢慢积累为垃圾。

我想知道这是否准确,因为我认为只需要插入和更新就可以包含提交。 IBM 有这方面的文档吗?

我们目前每周进行回收以缓解该问题,但我希望在返回供应商要求他们更改代码之前很好地处理该问题。

最佳答案

任何事务都需要正确终止——为什么您认为这仅适用于插入和更新?考虑以事务方式运行“select a from b where c > 12”,然后“select a from b where c <= 12”;在事务中,数据库必须保证每个 a 从第一个或第二个选择中返回一次,而不是两者都返回(假设 c 永远不为空;-)。如果没有事务性,一些 a 可能会陷入困境,或者如果它们相应的 c 被不同的事务更改,则可能会返回两次,而这不是 ACID!-)

因此,当您不需要需要单独的 SELECT 查询相互进行事务处理时,请告诉数据库!您所说的方式是在每次选择后终止事务(通常提交是您用于此目的的事务,尽管我猜您可以漠不关心地选择在这里使用回滚;-)。

关于sql - DB2 中的选择查询是否需要提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1521475/

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