錯誤程式碼及 DB2 中的死鎖成因及示例
當兩個應用程式相互鎖定彼此需要的資料時,將會產生 DEADLOCK 條件。兩個應用程式都會等待另一個應用程式釋放鎖,因此發生死鎖。
讓我們看一個示例來更好地理解這一點
有兩個 COBOL-DB2 程式正在執行中:PROG A 和 PROG B。
PROG A 在 ORDERS 表中持有 UPDATE LOCK,而 PROG B 在 TRANSACTION 表中持有 UPDATE LOCK。在某個時間點,PROG A 需要在 TRANSACTION 表上放置 UPDATE LOCK,而 PROG B 需要在 ORDERS 表上放置 UPDATE LOCK,但兩個應用程式程式無法在同一頁面上放置 UPDATE LOCK。
因此,兩個程式會互相等待對方釋放鎖,最終進入 DEADLOCK 狀態。
如果程式進入 DEADLOCK 狀態,則 COBOL-DB2 程式將失敗,錯誤程式碼為 -911 和 -913。-911 表示 DB2 發出了自動回滾,而 -913 表示自動回滾不是由 DB2 發出的(DB2 不可行)。
廣告
資料結構
網路技術
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP