sql >> Databasteknik >  >> RDS >> Sqlserver

Undvik dödläge genom att använda NOLOCK-tips

Enstaka dödlägen på en RDBMS som låser som SQL Server/Sybase förväntas.

Du kan koda på klienten för att försöka igen som rekommenderat min MSDN "Hantera dödlägen" .Undersök i princip SQLException och kanske en halv sekund senare, försök igen.

Annars bör du granska din kod så att all åtkomst till tabeller är i samma ordning. Eller så kan du använda SET DEADLOCK_PRIORITY för att kontrollera vem som blir ett offer.

På MSDN för SQL Server finns "Minimering av dödlägen" som startar

Detta nämner också "Use a Lower Isolation Level" som jag inte gillar (samma som många SQL-typer här på SO) och är din fråga. Gör inte det är svaret... :-)

Obs:MVCC typ RDBMS (Oracle, Postgres) har inte detta problem. Se http://en.wikipedia.org/wiki/ACID#Locking_vs_multiversioning men MVCC har andra problem.



  1. Hur man hittar den sista dagen i månaden för ett givet datum i MySQL

  2. Mysql AVG för att ignorera noll

  3. Globalt icke-partitionerat index i Oracle

  4. Python:ValueError:formatet tecken ''' (0x27) som inte stöds vid index 1