Bueno, aquí están las respuestas correctas. ¿Estás respondiendo a las preguntas? Si no lo has hecho, … deberías hacerlo. Así sabrás realmente que sabes y que no sabes sobre las transacciones del Firebird.

Pregunta 1. Si una transacción bloquea a una fila justo cuando va a realizar un UPDATE en esa fila, esa transacción es:

[Optimista]     [Pesimista]

La transacción es Optimista. Las transacciones optimistas bloquean a una fila justo en el instante en que deben realizar un UPDATE o un DELETE a esa fila. En cambio, las transacciones pesimistas bloquean a la fila cuando la transacción se inicia, lo cual pudo haber ocurrido mucho antes del UPDATE o del DELETE.

Por eso el nombre de optimistas y de pesimistas. La optimista supone que cuando quiera actualizar la fila podrá hacerlo porque ninguna otra transacción la tendrá bloqueada. La pesimista bloquea la fila al iniciar la transacción para que cuando necesite actualizarla pueda hacerlo ya que ninguna otra transacción la habrá bloqueado.

Pregunta 2. En Firebird es preferible que las transacciones sean:

[Optimistas]     [Pesimistas]     [Es indiferente]

Es altamente preferible que las transacciones sean Optimistas. ¿Por qué? Porque Firebird usa versionado múltiple de registros, es decir que cada operación de UPDATE o de DELETE crea un nuevo registro en la tabla (cada registro puede tener muchas versiones). Eso es así, siempre fue así, y nunca cambiará. Si una transacción es pesimista entonces durante mucho tiempo impide a las demás transacciones realizar un UPDATE o un DELETE a la fila (o filas) que esa transacción pesimista bloqueó.

Pregunta 3. Si se desea que aunque varios usuarios estén insertando datos simultáneamente no haya números faltantes en la secuencia, las transacciones deben ser:

[Optimistas]     [Pesimistas]     [Es indiferente]

Las transacciones deben ser Pesimistas. Este es casi el único caso en que se justifica que las transacciones sean pesimistas. Si fueran optimistas entonces si una transacción termina con un ROLLBACK dejará un hueco en la secuencia.

Pregunta 4. Para que una transacción bloquee a una fila el menor tiempo posible, esa transacción debe ser:

[Optimista]     [Pesimista]     [Es indiferente]

La transacción debe ser Optimista. Las transacciones optimistas bloquean a una fila en el momento de realizarle un UPDATE o un DELETE y la desbloquean inmediatamente después. En cambio las transacciones pesimistas bloquean a la fila en el momento de iniciarse la transacción y la desbloquean en el momento de finalizar la transacción.

Pregunta 5. Si siempre un solo usuario usará una Base de Datos, es preferible que las transacciones en esa Base de Datos sean:

[Optimistas]     [Pesimistas]     [Es indiferente]

En este caso es preferible que las transacciones sean Pesimistas porque eso le ahorrará al Firebird el trabajo de estar verificando si una fila está bloqueada por otra transacción o no. Por lo tanto, la transacción finalizará más rápido.

Pregunta 6. Si muchos usuarios usarán una Base de Datos al mismo tiempo, es preferible que las transacciones en esa Base de Datos sean:

[Optimistas]     [Pesimistas]     [Es indiferente]

Es altamente preferible que las transacciones sean Optimistas porque son las que mantienen bloqueadas a las filas el menor tiempo posible.

Pregunta 7. Si a una Base de Datos se accederá por Internet, es preferible que las transacciones en esa Base de Datos sean:

[Optimistas]     [Pesimistas]     [Es indiferente]

En este caso ya es prácticamente obligatorio que las transacciones sean Optimistas porque si una transacción T1 tiene bloqueada de forma pesimista a una fila y la transacción T2 quiere actualizar esa fila, podría tardar una eternidad en hacerlo.

Como la distancia entre el Servidor y la computadora del usuario es muchísimo mayor cuando el acceso es por Internet, comparado con el acceso dentro de una red local, todas las operaciones ya de por sí son más lentas.Y si a eso además le sumamos que las transacciones son pesimistas, entonces…sólo resta sentarse, ponerse cómodo, … y esperar.

Artículos relacionados:

 Entendiendo a las transacciones

3 preguntas sobre transacciones

Respuestas a las 3 preguntas sobre transacciones

Más preguntas sobre transacciones (2)

Respuestas a más preguntas sobre transacciones (2)

Más preguntas sobre transacciones (3)

Respuestas a más preguntas sobre transacciones (3)

Más preguntas sobre transacciones (4)

Respuestas a más preguntas sobre transacciones (4)

Más preguntas sobre transacciones (5)

El índice del blog Firebird21

El foro del blog Firebird21