sql >> Database >  >> RDS >> Sqlserver

Geen SQL-impasse door ontwerp - enige coderingspatronen?

Het schrijven van deadlock-proof code is echt moeilijk. Zelfs als je de tabellen in dezelfde volgorde opent, kun je nog steeds deadlocks krijgen [1]. Ik heb een bericht op mijn blog geschreven waarin enkele benaderingen worden toegelicht die je zullen helpen om impasses te vermijden en op te lossen.

Als u er zeker van wilt zijn dat twee verklaringen/transacties nooit vastlopen, kunt u dit mogelijk bereiken door te kijken welke vergrendelingen elke instructie verbruikt met behulp van de sp_lock systeem opgeslagen procedure. Om dit te doen, moet je ofwel heel snel zijn of een open transactie gebruiken met een holdlock-hint.

Opmerkingen:

  1. Elke SELECT-instructie die meer dan één vergrendeling tegelijk nodig heeft, kan een impasse raken tegen een intelligent ontworpen transactie die de vergrendelingen in omgekeerde volgorde grijpt.


  1. Gebruiksstatistieken SQL Server-index

  2. Hoe de fout `prisma/client is nog niet geïnitialiseerd` op Vercel op te lossen?

  3. pt-query-digest Alternatieven - MySQL Query Management &Monitoring met ClusterControl

  4. Hoe COS() werkt in MariaDB