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

Deadlock-puslespil:Offer ejer ikke nogen ressource, bruges til at dræbe for at løse dødvande

I forbindelse med låsning er tabeller og deres relaterede indekser separate enheder. Til tider sker dead locking mellem en tabel og dens indeks i stedet for mellem to separate tabeller.

Problemet er mest sandsynligt, når en lås er anskaffet på et indeks, og derefter en anden lås er erhvervet på den relaterede tabel (dvs. bjælke) for at foretage dataopslag. Under indsættelsen vil dette ske i modsat rækkefølge. Først låses og opdateres tabellen (dvs. bjælken), derefter låses indekser.

select foo 
from bar 
where @someId = 0 OR SomeId = @someId

Har du/kan du tilføje et dækkende indeks (for at hjælpe med valget), der indeholder både SomeId og foo ? På denne måde undgår du opslaget helt og stopper problemet i at opstå.

Kan du sende forespørgselsplanerne i stedet for deadlock frames?



  1. Hvordan kodes kyrillisk i mysql?

  2. MySQL Group By med top N-nummer af hver slags

  3. Mysql - Sådan afsluttes/forlader du lagret procedure

  4. Søg i Microsoft SQL Server-databasen efter lagrede data