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

t-SQL sammensat erklæring forårsager dødvande, nogen idé om hvorfor?

Du skal enten have flere låse eller færre.

Det nemmeste svar er at gå enten NOLOCK (bedste ydeevne) eller TABLOCKX (konsistens uden at skulle tænke).

Hvis du ikke kan bruge with (nolock) på grund af konsistenskrav kan du tilføje with (tablockx) .Dette vil reelt betyde, at kun én tråd kan udføre lignende sætninger ad gangen - der vil ikke være nogen samtidighed.

Alternativet er at analysere dine krav meget mere detaljeret, hvilket ikke kan lade sig gøre uden en forståelse af, hvorfor du opdaterer tabellen, hvad dataene er til osv.

Skal denne erklæring for eksempel virkelig være med i transaktionen? Det lugter af husholdning:

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

Hvis du tager det ud af transaktionen og lægger det i en separat batch, kan du opleve, at problemerne forsvinder.




  1. SQL-injektionsforebyggelse med dynamisk SQL ALTER USER-forespørgsel

  2. mySQL drop-tabeller med jokertegn, der kun bruger SQL-sætning?

  3. Indsæt data ved hjælp af multidimensional matrix fra flere felter

  4. Sådan overføres SQLite db til webserver på Android-telefon (android)