Il s'agit d'une humble question posée dans l'esprit d'accroître mes connaissances; veuillez être gentil dans votre réponse.
En tant que développeur d'applications de longue date, je sais à un certain niveau ce qu'est une transaction (je les utilise tout le temps). En laissant de côté les niveaux d'isolement des transactions pour le moment, à un niveau élevé, une transaction permet de terminer un bloc de travail entièrement ou pas du tout, et permet une certaine isolation des autres activités de modification de la base de données.
Je sais également ce qu'est un verrou (dans diverses bases de données), ou du moins comment on se comporte (si je verrouille explicitement une table, aucun autre processus ou thread ne peut mettre à jour quoi que ce soit à propos de cette table).
Ce que je ne sais pas le plus clairement, c'est: dans diverses bases de données, lorsque je verrouille explicitement une ligne ou une table, est-ce que j'utilise exactement les mêmes constructions que celles utilisées par les fonctionnalités de transaction de la base de données sous les couvertures pour que la transaction fonctionne correctement?
Autrement dit, il me semble que pour qu'une transaction soit atomique et isolée, elle doit faire un certain verrouillage. Ce verrouillage initié par transaction et masqué par la tranaction est-il le même type de verrouillage auquel diverses bases de données me permettent d'accéder via des constructions telles que SELECT FOR UPDATE
des LOCK
commandes explicites ? Ou ces deux concepts sont-ils complètement différents?
Encore une fois, je m'excuse pour la naïveté de cette question; Je suis heureux d'être désigné par des sources plus fondamentales.