WEB开发网
开发学院数据库DB2 DB2通用数据库的并发性 阅读

DB2通用数据库的并发性

 2008-09-09 16:30:20 来源:WEB开发网   
核心提示: 暂挂若一个应用程序进程请求一个锁,而该锁已被另一应用程序进程所拥有,DB2通用数据库的并发性(3),且不能共享,此时,因为应用程序 A 具有页面 X 上的排他锁,这是一种僵持情况,就称该进程为 暂挂的,请求应用程序会被挂起

暂挂

若一个应用程序进程请求一个锁,而该锁已被另一应用程序进程所拥有,且不能共享,此时,就称该进程为 暂挂的。请求应用程序会被挂起,即它将暂时停止运行。锁请求的优先次序如下:将新来的锁请求按照接收次序进行排队。已经持有锁的应用程序的请求以及进行锁提升的请求要比新应用程序的请求先得到服务。而在那些分组中,请求次序则为“先进先出(first in,first out,FIFO)”。

超时

当应用程序处于暂挂状态(见上面)超过了预设的一段时间间隔,那么就要终止该应用程序。该应用程序被称为已经超时。在终止该应用程序之前,会在 SQLCA 中收到一条合适的错误消息。SQLCA(SQL 通信域)是 SQL 应用程序预留的一块大小固定的存储区域,用于从 DB2 UDB 向程序传递条件代码和其他信息。

某些操作,如 COMMIT 和 ROLLBACK,就不能超时。在下面的子标题 RESOURCE TIMEOUT 中,将对决定应用程序进程可以等待资源多长时间的预设时间间隔进行讨论。

死锁

当两个或更多应用程序每个都持有另一应用程序所需资源上的锁,没有这些资源,那些应用程序都无法继续完成其工作时,这时就会出现死锁的状况。

以下是一个简单的死锁场景:

应用程序 A 访问表 T,并请求页面 X 上的排他(非可共享的)锁。

应用程序 B 访问表 T,并请求页面 Y 上的排他锁。

然后,应用程序 A 请求页面 Y 上的锁,同时仍然持有页面 X 上的排他锁。应用程序 A 将被挂起,因为应用程序 B 具有页面 Y 上的排他锁。

然后,应用程序 B 请求页面 X 上的锁,同时仍然持有页面 Y 上的排他锁。应用程序 B 将被挂起,因为应用程序 A 具有页面 X 上的排他锁。

这是一种僵持情况。应用程序 A 和 B 都无法继续工作。

上一页  1 2 3 4 5 6 7  下一页

Tags:DB 通用 数据库

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接