sql >> Database >  >> RDS >> Sqlserver

t-SQL samengestelde instructie veroorzaakt de impasse, enig idee waarom?

Je moet meer of minder sloten vasthouden.

Het gemakkelijkste antwoord is om ofwel NOLOCK . te gaan (beste prestatie) of TABLOCKX (consistentie zonder na te hoeven denken).

Als u with (nolock) niet kunt gebruiken vanwege consistentievereisten kunt u with (tablockx) . toevoegen .Dit betekent in feite dat slechts één thread tegelijkertijd dezelfde instructies kan uitvoeren - er zal geen gelijktijdigheid zijn.

Het alternatief is om uw vereisten veel gedetailleerder te analyseren, wat niet mogelijk is zonder te begrijpen waarom u de tabel bijwerkt, waar de gegevens voor zijn, enz.

Moet deze verklaring bijvoorbeeld echt in de transactie staan? Het ruikt naar huishouding:

  DELETE FROM [dbo].[t_Log_2] 
  WHERE [idtm]<'2011-03-12 08:41:57';

Als u dat uit de transactie haalt en in een aparte batch plaatst, kunnen de problemen verdwijnen.




  1. MySQL-index voor groeperen op / bestellen op

  2. De achtergrondkleur van een formulier wijzigen in Access 2016

  3. PHP float/double opgeslagen als MySQL DECIMAL

  4. PostgreSQL-array met elementen die elk een externe sleutel zijn