sql >> Database >  >> RDS >> Sqlserver

Pessimistisch slot in T-SQL

Als je wacht op een andere hulpbron, zoals een eindgebruiker, volg dan het advies van Dave Markle op en doe het niet.

Probeer anders de volgende T-SQL-code:

BEGIN TRAN

SELECT *
FROM   authors AU
WITH   (HOLDLOCK, ROWLOCK)
WHERE  AU.au_id = '274-80-9391'

/* Do all your stuff here while the row is locked */

COMMIT TRAN

De HOLDLOCK hint vraagt ​​SQL Server beleefd om het slot vast te houden totdat u de transactie uitvoert. De ROWLOCK hint vraagt ​​SQL Server beleefd om alleen deze rij te vergrendelen in plaats van een pagina- of tabelvergrendeling uit te geven.

Houd er rekening mee dat als veel rijen worden beïnvloed, SQL Server het initiatief neemt en escaleert naar paginavergrendelingen, of dat u een heel leger aan rijvergrendelingen hebt die het geheugen van uw server vullen en de verwerking vertragen.



  1. De verbinding tussen client en server configureren Oracle 10g

  2. IO.FileNotFoundException in MySql.Data.dll:kan System.Security.Permissions niet laden

  3. Twee externe sleutels in dezelfde kolom uit één tabel

  4. Oracle DATE-kolommen migreren naar TIMESTAMP met tijdzone