sql >> Databáze >  >> RDS >> Sqlserver

Pesimistický zámek v T-SQL

Pokud čekáte na jiný zdroj, jako je koncový uživatel, dejte na radu Davea Markla a nedělejte to.

V opačném případě zkuste následující kód T-SQL:

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

HOLDLOCK hint zdvořile požádá SQL Server, aby podržel zámek, dokud transakci nepotvrdíte. ROWLOCK hint zdvořile požádá SQL Server, aby uzamkl pouze tento řádek, místo aby vydal zámek stránky nebo tabulky.

Uvědomte si, že pokud je ovlivněno mnoho řádků, buď SQL Server převezme iniciativu a eskaluje na uzamčení stránky, nebo budete mít celou armádu zámků řádků, které zaplní paměť vašeho serveru a utápí zpracování.



  1. Jak exportovat výsledky dotazů Oracle do souboru JSON při použití SQLcl

  2. ORA-28040:Žádný odpovídající ověřovací protokol

  3. Zvyšte a snižte hodnotu řádku o 1 v MySQL

  4. jak vybrat počet z hlavního dotazu do poddotazu