gpt4 book ai didi

database - 如果客户死亡,我们应该期待什么样的交易行为?

转载 作者:搜寻专家 更新时间:2023-10-30 22:19:31 24 4
gpt4 key购买 nike

BEGIN;

UPDATE saving SET balance = balance - 100.00 WHERE name = 'Alice';

UPDATE checking SET balance = balance + 100.00 WHERE name = 'Alice';

COMMIT

在此交易期间,我的客户在提交前死亡。我期望数据库的状态是什么?

让我用一个具体的例子 http://java.sun.com/developer/onlineTraining/Programming/JDCBook/bmp4.html

页面末尾显示的示例具有明确的“提交”或“回滚”逻辑。但是如果客户端进程在操作后立即死亡会发生什么:

"AuctionItem ai= home.create(seller, description, auctiondays, startprice, summary);"

客户端没有机会捕获异常回滚,也没有机会提交。

最佳答案

最终,操作系统中的 tcp keep alive 机制将终止连接。当它这样做时,数据库将回滚事务,因为这是没有显式提交的唯一可能选择。当连接处于事件状态且空闲时,您将锁定数据并在 pg_stat_activity 表中有一个条目指示“事务中空闲”。另一个连接对您的事务锁定的行的任何更新都将等待它提交/回滚。

默认的 tcp_keepalive 超时为 2 小时和一些奇怪的重试分钟。

关于database - 如果客户死亡,我们应该期待什么样的交易行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5748143/

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