Esta es una pregunta humilde hecha con el espíritu de aumentar mi conocimiento; amablemente sea amable en su respuesta.
Como desarrollador de aplicaciones desde hace mucho tiempo, sé en algún nivel qué es una transacción (las uso todo el tiempo). Dejando de lado los niveles de aislamiento de transacciones por el momento, en un nivel alto, una transacción permite que un bloque de trabajo se complete por completo o no se complete, y permite una cierta cantidad de aislamiento de otras actividades de modificación de la base de datos.
También sé qué es (en varias bases de datos) un bloqueo, o al menos cómo se comporta uno (si bloqueo una tabla de manera explícita, entonces ningún otro proceso o subproceso puede actualizar nada sobre esa tabla).
Lo que claramente no tengo claro es: en varias bases de datos, cuando bloqueo explícitamente una fila o una tabla, ¿estoy empleando exactamente las mismas construcciones que usan las instalaciones de transacción de la base de datos debajo de las cubiertas para hacer que la transacción funcione correctamente?
Es decir, se me ocurre que para que una transacción sea atómica y aislada, debe estar bloqueándose. ¿Es este bloqueo iniciado por la transacción, oculto por la transacción, el mismo tipo de bloqueo que varias bases de datos me permiten acceder a través de construcciones como comandos SELECT FOR UPDATE
explícitos LOCK
? ¿O son estos dos conceptos completamente diferentes?
Nuevamente, me disculpo por la ingenuidad de esta pregunta; Estoy feliz de ser señalado a fuentes más fundamentales.