sql >> Database teknologi >  >> RDS >> Sqlserver

Undgå dødvande ved at bruge NOLOCK-tip

Lejlighedsvis deadlocks på et RDBMS, der låser som SQL Server/Sybase, forventes.

Du kan kode på klienten for at prøve igen som anbefalet min MSDN "Handling Deadlocks" . Grundlæggende skal du undersøge SQLException og måske et halvt sekund senere, prøv igen.

Ellers bør du gennemgå din kode, så al adgang til tabeller er i samme rækkefølge. Eller du kan bruge SET DEADLOCK_PRIORITY til at kontrollere, hvem der bliver et offer.

På MSDN til SQL Server er der "Minimering af deadlocks" som starter

Dette nævner også "Use a Lower Isolation Level", som jeg ikke bryder mig om (samme som mange SQL-typer her på SO) og er dit spørgsmål. Gør det ikke er svaret... :-)

Bemærk:MVCC type RDBMS (Oracle, Postgres) har ikke dette problem. Se http://en.wikipedia.org/wiki/ACID#Locking_vs_multiversioning men MVCC har andre problemer.



  1. SQL Server:OPDATERE en tabel ved at bruge ORDER BY

  2. Hvordan JOINDER man to kolonner med én serialiseret data?

  3. Sådan indsætter du samme data i to tabeller i mysql

  4. Sådan concat_ws flere felter og fjerne duplikerede separatorer for tomme pladser