Ami*_*rma 3 asp.net asynchronous application-pool
该应用程序的架构是直截了当的.有一个Web应用程序维护帐户持有人数据.处理此数据并根据业务规则的数量更新帐户持有者的状态.此过程使用页面上的按钮启动,并且是一个长时间运行的过程(比如15分钟).开发一个组件来执行此数据处理,该数据处理在内部调用存储过程.大多数业务规则都保存在存储过程中.
为了处理超时,处理是异步完成的(使用线程池或自定义线程或异步回调代理).整个过程在一个交易下运行.如果应用程序池被回收或工作进程被强制终止,我想知道您对事务发生的情况的看法?
Pau*_*ner 10
我假设您正在使用SQL Server,MySQL或Oracle等SQL数据库.
这些数据库平台有自己的内部事务模型.当您与他们通信并启动事务时,服务器会为您管理事务.
对于要提交的事务,客户端必须告知数据库提交更改.如果事务从未收到此指令,则事务仍处于"挂起"状态.最终,在事务处于"挂起"而没有任何进一步指示之后,服务器将认为它"已死"并将放弃它,对事务执行回滚.
这是事务处理的最坏情况,因为挂起事务可能(取决于隔离级别)导致数据库中的资源(行,页,整个表)不可用.通常,当网络连接在事务中间失败(例如,断电)时,您会看到此情况,并且客户端不会向服务器发送"关闭连接"命令.
如果在事务期间在对数据库工作的过程中使应用程序池被回收而终止应用程序,则将关闭与数据库的连接.这种关闭连接的行为应该导致服务器放弃与该连接关联的任何待处理事务.
确切的行为取决于特定的数据库和配置.
在任何一种情况下,您的数据库的数据都将保持不变.
归档时间: |
|
查看次数: |
2506 次 |
最近记录: |