sql >> Database >  >> RDS >> Sqlserver

Deadlock van bereik vergrendelt op primaire sleutelindex

Het is een klassieke impasse wanneer een proces (slachtoffer) leest op serializable niveau en een ander werkt dezelfde geclusterde tabel bij.

Je bent in de war met wat wordt omgezet naar wat.

Het eerste proces ("process5e13b88") heeft RangeS-S . verworven lock en wacht op een andere RangS-S slot (waar X staat vergrendeling van het updateproces), het converteert niets.

De tweede "process5e45b88" heeft X . gekregen slot op één sleutel en U op een andere sleutel en wil deze converteren naar X maar het kan niet omdat er RangeS-S . is slot.

Ik voeg de foto bij waar je kunt zien dat het ene proces alleen RangeS-S wil en verwerft sloten en een andere alleen X sloten.

Wanneer u RangeS-U . ziet lock dit betekent dat er RangeS-S . is slot op het bereik, maar de sleutel zelf heeft U slot



  1. MySQL-queryvolgorde op meerdere items

  2. Duplicaat medewerker in tafel wegens overstap afdeling

  3. Waarschuwing:mysqli_query() verwacht dat parameter 1 mysqli is, resource gegeven

  4. Een specifieke waarde opvragen met draaitabel mySQL