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.