Simultaneidad y bloqueos

Simultaneidad es la capacidad que tienen más de un proceso de aplicaciones para acceder a los mismos datos esencialmente al mismo tiempo.

Iniciar la información de la interfaz de programación específica del programa.

Muchas transacciones utilizan simultáneamente una aplicación de entrada de pedidos. Cada transacción realiza inserciones en tablas de facturas y elementos de factura, lecturas de una tabla de datos sobre clientes y lecturas y actualizaciones de datos sobre elementos a mano. Con microsegundos de diferencia pueden prepararse dos operaciones sobre los mismos datos, realizadas por dos transacciones simultáneas. Para los usuarios, las operaciones parecen simultáneas.

Por qué Db2 controla la simultaneidad

La simultaneidad se debe controlar para evitar que se pierdan actualizaciones y sus efectos no deseados, como lecturas no repetibles y acceso a datos no confirmados.
Pérdida de actualizaciones
Sin control de simultaneidad, dos procesos, A y B, pueden leer la misma fila de la base de datos y calcular nuevos valores para una de sus columnas en función de lo que leen. Si A actualiza la fila con su nuevo valor y luego B actualiza la misma fila, la actualización de A se pierde.
Acceso a datos no confirmados
Sin control de simultaneidad, el proceso A puede actualizar un valor de la base de datos y el proceso B puede leer dicho valor antes de que se confirme. Luego, si el valor de A no se confirma posteriormente, sino que se retrotrae, los cálculos de B se basan en datos no conformados (y probablemente incorrectos).
Lecturas no repetibles
Algunos procesos necesitan la siguiente secuencia de sucesos: A lee una fila de la base de datos y continúa procesando otras solicitudes de SQL. Luego, A vuelve a leer la primera fila y debe encontrar los mismos valores que ha leído la primera vez. Sin control, el proceso B podría haber modificado la fila entre las dos operaciones de lectura.

Para evitar que se produzcan estas situaciones a menos que se permitan de forma específica, Db2 puede utilizar bloqueos para controlar la simultaneidad.

Cómo utiliza Db2 los bloqueos

Un bloqueo asocia un recurso de Db2 a un proceso de aplicación de una forma que afecta a cómo otros procesos pueden acceder al mismo recurso. Se dice que el proceso asociado al recurso retiene o posee el bloqueo. Db2 utiliza bloqueos para garantizar que ningún proceso acceda a datos que hayan sido modificados, pero aún no confirmados, por otro proceso. Para los bloqueos XML y LOB, Db2 también utiliza bloqueos para garantizar que una aplicación no pueda acceder a datos parciales o incompletos

Los bloqueos pueden causar contienda, que degrada el rendimiento, lo que incluye situaciones como suspensiones, tiempos de espera excedidos y puntos muertos. La comprensión de los tamaños, las duraciones, las modalidades y los objetos de los bloqueos de transacciones puede ayudarle a comprender por qué los procesos encuentran suspensiones o puntos muertos o exceden tiempos de espera y cómo se podría evitar esa contienda.