Ejemplos de escritura simultánea - Amazon Redshift

Ejemplos de escritura simultánea

En los siguientes ejemplos de pseudocódigo, se demuestra cómo, cuando se ejecutan de manera simultánea, las transacciones avanzan o esperan.

Operaciones COPY simultáneas en la misma tabla

La transacción 1 copia filas en la tabla LISTING:

begin; copy listing from ...; end;

La transacción 2 comienza de manera simultánea en una sesión por separado y copia más filas en la tabla LISTING. La transacción 2 debe esperar hasta que la transacción 1 levante el bloqueo de escritura de la tabla LISTING; luego, podrá avanzar.

begin; [waits] copy listing from ; end;

El mismo comportamiento se observaría si una o ambas transacciones tuvieran un comando INSERT, en lugar de COPY.

Operaciones DELETE simultáneas en la misma tabla

La transacción 1 elimina filas de una tabla:

begin; delete from listing where ...; end;

La transacción 2 comienza de manera simultánea y elimina filas de la misma tabla. Tendrá éxito porque espera a que la transacción 1 termine antes de probar eliminar filas.

begin [waits] delete from listing where ; end;

El mismo comportamiento se observaría si una o ambas transacciones tuvieran un comando UPDATE para la misma tabla, en lugar de DELETE.

Transacciones simultáneas con una mezcla de operaciones de lectura y escritura

En este ejemplo, la transacción 1 elimina filas de la tabla USERS, vuelve a cargar la tabla, ejecuta una consulta COUNT(*) y, luego, ANALYZE, antes de confirmar:

begin; delete one row from USERS table; copy ; select count(*) from users; analyze ; end;

Mientras tanto, comienza la transacción 2. Esta transacción prueba copiar filas adicionales en la tabla USERS, analizarla y, luego, ejecutar la misma consulta COUNT(*) que la primera transacción:

begin; [waits] copy users from ...; select count(*) from users; analyze; end;

La segunda transacción tendrá éxito porque debe esperar a que la primera termine. Su consulta COUNT devolverá el recuento en función de la carga que ha completado.