Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle verrouillera-t-il toute la table lors de l'exécution d'une instruction DML ou uniquement la ligne

Nous pouvons émettre des verrous explicitement avec la commande LOCK TABLE. En savoir plus

Sinon, une insertion ne verrouille aucune autre ligne. En raison du modèle d'isolation de lecture d'Oracle, cette ligne n'existe dans notre session que jusqu'à ce que nous la validions, donc personne d'autre ne peut rien faire avec. En savoir plus .

Une instruction de mise à jour verrouille uniquement les lignes concernées. Sauf si nous avons implémenté une stratégie de verrouillage pessimiste avec SELECT ... FOR UPDATE. En savoir plus .

Enfin, dans Oracle, les rédacteurs ne bloquent pas les lecteurs. Ainsi, même les lignes verrouillées peuvent être lues par d'autres sessions, elles ne peuvent tout simplement pas être modifiées. En savoir plus .

Ce comportement est intégré au noyau Oracle et n'est pas configurable.

Justin fait un bon point sur le verrou DDL au niveau de la table. Ce verrou fera attendre une session exécutant DDL sur la table jusqu'à ce que la session DML soit validée, à moins que le DDL ne ressemble à CREATE INDEX, auquel cas il échouera immédiatement avec ORA-00054.