sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server - låser [SELECT] [UPPDATERING]?

Ja - till viss del.

Hur länge en SELECT håller fast vid ett delat lås beror på isoleringsnivån för transaktionen:

  • READ UNCOMMITTED - inget delat lås förvärvas alls - UPDATE är inte blockerad
  • READ COMMITTED - delat lås förvärvas bara för att läsa data - UPDATE kan vara blockerad under en mycket kort tid
  • REPEATABLE READ och SERIALIZABLE - delat lås förvärvas och hålls kvar till slutet av transaktionen - UPDATE är blockerad tills SELECT transaktionen avslutas

Tekniskt sett är UPDATE satsen får först en UPDATE lås - som är kompatibelt med ett delat lås (som används av SELECT ) - under den tid som den läser av de aktuella värdena för raderna som ska uppdateras.

När det är gjort visas Update låset eskaleras till ett exklusivt lås för att den nya datan ska skrivas till tabellen.



  1. Spark SQL och MySQL- SaveMode.Skriv över utan att infoga modifierade data

  2. Skapa en e-postprofil för databas i SQL Server (T-SQL)

  3. Hur man grupperar efter och sammanfogar arrayer i PostgreSQL

  4. Hur tar jag reda på vilken transaktion som orsakar en väntar på tabell-metadatalås?