gpt4 book ai didi

asp.net - 当应用程序池回收或工作进程被强制终止时,事务会发生什么?

转载 作者:行者123 更新时间:2023-12-02 10:31:33 29 4
gpt4 key购买 nike

应用程序的架构非常简单。有一个网络应用程序可以维护帐户持有者数据。根据业务规则的数量处理这些数据并更新帐户持有人的状态。此过程是使用页面上的按钮启动的,并且是一个长时间运行的过程(例如 15 分钟)。开发了一个组件来执行此数据处理,该组件在内部调用存储过程。大多数业务规则都保存在存储过程中。

为了处理超时,处理是异步完成的(使用线程池或自定义线程或异步回调委托(delegate))。整个流程在事务下运行。我想知道您对于应用程序池被回收或工作进程被强制终止时事务会发生什么情况的看法?

最佳答案

我假设您使用的是 SQL 数据库,例如 SQL Server、MySQL 或 Oracle。

这些数据库平台有自己的内部事务模型。当您与他们通信并发起交易时,服务器会为您管理交易。

对于要提交的事务,客户端必须告知数据库提交更改。如果交易从未收到此指令,则交易将保持“待处理”状态。最终,在事务处于“待处理”状态且没有任何进一步指示的情况下,服务器将认为该事务已“死亡”并放弃它,并对事务执行回滚。

这是事务处理的最坏情况,因为挂起的事务可能(取决于隔离级别)导致数据库中的资源(行、页、整个表)不可用。通常,当网络连接在事务中失败(例如由于断电)并且客户端未向服务器发送“关闭连接”命令时,您会看到这种情况。

<小时/>

如果您的应用程序在事务期间处理数据库时通过回收应用程序池而终止,与数据库的连接将被关闭。关闭连接的这一行为应导致服务器放弃与该连接关联的任何待处理事务。

确切的行为取决于特定的数据库和配置。

无论哪种情况,您的数据库数据都将保持不变。

关于asp.net - 当应用程序池回收或工作进程被强制终止时,事务会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2628578/

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