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

SQL Server – zamyká [SELECT] [AKTUALIZACE]?

Ano – do určité míry.

Jak dlouho SELECT držení sdíleného zámku závisí na úrovni izolace transakce:

  • READ UNCOMMITTED - není získán žádný sdílený zámek - UPDATE není blokováno
  • READ COMMITTED - sdílený zámek se získává pouze po dobu čtení dat - UPDATE může být zablokován na velmi krátkou dobu
  • REPEATABLE READ a SERIALIZABLE - sdílený zámek je získán a uchováván až do konce transakce - UPDATE je blokováno, dokud SELECT transakce končí

Technicky vzato, UPDATE příkaz nejprve dostane UPDATE zámek - který je kompatibilní se sdíleným zámkem (jak je používán SELECT ) - po dobu, po kterou načítá aktuální hodnoty řádků, které mají být aktualizovány.

Jakmile to uděláte, Update lock je eskalován na exkluzivní zámek pro nová data, která mají být zapsána do tabulky.



  1. Jak zvrátit hashované a solené heslo?

  2. XPath1 v SQL/XML, count elements vrací prázdné

  3. Získejte min_price produktu podle sku

  4. SQL:jak omezit spojení na prvním nalezeném řádku?