通常,强制停止命令(FORCE)只是发出一个中断信号。当一个代理进程执行强制停止命令时,它将为应用程序设置一个强制停止标志,是否能够强制停止,要看协调代理进程在做什么,然后代理进程向协调代理进程发出中断信号或者是处于等待状态。
[@more@]通常,强制停止命令(FORCE)只是发出一个中断信号。当一个代理进程执行强制停止命令时,它将为应用程序设置一个强制停止标志,是否能够强制停止,要看协调代理进程在做什么,然后代理进程向协调代理进程发出中断信号或者是处于等待状态。
有些时候,代理进程只能处于等待状态。因为当每一个中断发出时,都有中断的优先级。原则上DB2的强制停止命令只能中断那些优先级别比较低的进程。
比如,如果一个应用程序正在执行回滚操作,而这个时候我们发出强制停止命令,如果进程这时被停止,数据库会处于不一致状态,这当然是我们不愿意看到的。所以我们不会终止这样的进程。这个机制是由中断的优先权来控制的。在这个例子中,回滚操作有较高的优先级别,相对低的代理进程无法中断它。
就像我们执行FORCE APPLICATION命令看到的输出一样,强制停止进程是一个异步进程。当应用程序处于回滚状态时,代理进程只是设置一个强制停止标志,但不会马上中断程序。上面的例子中,当协调代理节点结束回滚操作后,它会恢复到比较低的优先级别,等到代理进程检查强制停止或中断时,它会发现强制停止标志并执行中断。因此,强制停止命令并不是没有工作,而是延迟到之后的某个时间来执行,而这个延迟时间是无法有代理进程控制的。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8481986/viewspace-905545/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8481986/viewspace-905545/