--start
引用
DB2 SQL error: SQLCODE: -911, SQLSTATE: 40001, SQLERRMC: 2
Message: The current transaction has been rolled back because of a deadlock or timeout. Reason code "2".
昨天,執(zhí)行了一條很簡單的SQL,卻怎么也執(zhí)行不成功,報的錯誤如上所示,是死鎖。既然是死鎖,那就過一會執(zhí)行吧。等了一會后仍然死鎖。到底是哪個事務和哪個事務相互鎖了呢?查詢了老半天才發(fā)現(xiàn)原來這條SQL語句更新的數(shù)據量非常大,導致鎖升級,然后鎖升級又失敗了,導致了死鎖。原來鎖升級失敗會導致死鎖。所以,通常我們應該將LOCKLIST和MAXLOCK參數(shù)調整到足夠大,盡量避免鎖等待、鎖升級,發(fā)揮數(shù)據庫的最大并發(fā)性。