Serialización y puesta en cola de transacciones simultáneas, transacciones implícitas
Una transacción implícita es una sentencia SQL única que no está enmarcada por una sentencia BEGIN.
cuando una transacción implícita falla la serialización
El sistema responde de la siguiente manera ante
una transacción implícita que falla la serialización:
- El sistema espera a que finalice la transacción que ha originado el conflicto de serialización.
- Una vez finalizada la transacción, por confirmación o anulación, el sistema vuelve a enviar las solicitudes en espera.
Cuando el número de transacciones implícitas supera el límite
Si el sistema alcanza un límite de 63 transacciones de lectura/escritura simultáneas y se emite una transacción que intenta modificar los datos, el sistema guarda la transacción y la pone en cola hasta que el número de transacciones de lectura/escritura actuales queda por debajo del límite.
Modificar el límite de tiempo predeterminado
El sistema guarda y pone en cola las
transacciones implícitas durante un intervalo de 360 minutos (valor
predeterminado). Si una transacción implícita espera más de 360 minutos (o seis horas), la transacción falla y devuelve el mensaje de errorERROR: Too many concurrent transactions. Puede modificar esta configuración de tiempo de espera por defecto de dos maneras:
- Para establecer el valor de la sesión actual, emita el siguiente
mandato:
SET serialization_queue_timeout = <number of minutes> - Para convertir este valor en global, configure la variable serialization_queue_timeout como postgresql.conf.