sql >> Database >  >> RDS >> Oracle

Zal Oracle de hele tabel vergrendelen tijdens het uitvoeren van een DML-instructie of alleen de rij?

We kunnen expliciet sloten uitgeven met het commando LOCK TABLE. Meer informatie

Anders vergrendelt een invoeging geen andere rijen. Vanwege het leesisolatiemodel van Oracle bestaat die rij alleen in onze sessie totdat we hem committen, dus niemand anders kan er iets mee doen. Meer informatie .

Een update-instructie vergrendelt alleen de betreffende rijen. Tenzij we een pessimistische sluitstrategie hebben geïmplementeerd met SELECT ... FOR UPDATE. Meer informatie .

Ten slotte blokkeren schrijvers in Oracle geen lezers. Dus zelfs vergrendelde rijen kunnen door andere sessies worden gelezen, ze kunnen alleen niet worden gewijzigd. Meer weten .

Dit gedrag is ingebakken in de Oracle-kernel en kan niet worden geconfigureerd.

Justin maakt een goed punt over de DDL-vergrendeling op tafelniveau. Die vergrendeling zorgt ervoor dat een sessie die DDL op de tafel uitvoert, wacht tot de DML-sessie zich commit, tenzij de DDL zoiets is als CREATE INDEX, in welk geval het onmiddellijk zal mislukken met ORA-00054.



  1. Hoe gegevens uit de database op te halen met behulp van webservices (JAX - RS) in eclipse met Java

  2. SQL niet gelijk aan (!=) Operator voor beginners

  3. Indexen in MySQL begrijpen:deel één

  4. hoe veel-op-veel opvragen?