--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í)行了一條很簡(jiǎn)單的SQL,卻怎么也執(zhí)行不成功,報(bào)的錯(cuò)誤如上所示,是死鎖。既然是死鎖,那就過(guò)一會(huì)執(zhí)行吧。等了一會(huì)后仍然死鎖。到底是哪個(gè)事務(wù)和哪個(gè)事務(wù)相互鎖了呢?查詢了老半天才發(fā)現(xiàn)原來(lái)這條SQL語(yǔ)句更新的數(shù)據(jù)量非常大,導(dǎo)致鎖升級(jí),然后鎖升級(jí)又失敗了,導(dǎo)致了死鎖。原來(lái)鎖升級(jí)失敗會(huì)導(dǎo)致死鎖。所以,通常我們應(yīng)該將LOCKLIST和MAXLOCK參數(shù)調(diào)整到足夠大,盡量避免鎖等待、鎖升級(jí),發(fā)揮數(shù)據(jù)庫(kù)的最大并發(fā)性。