Ho una query batch che eseguo quotidianamente sul mio database. Tuttavia, sembra rimanere bloccato allo stato inattivo e sto riscontrando molte difficoltà durante il debug di ciò che sta succedendo.
La query è un'aggregazione su una tabella che viene contemporaneamente inserita, che suppongo sia in qualche modo correlata al problema. (L'aggregazione è sui dati dei giorni precedenti, quindi gli inserimenti non dovrebbero influire sui risultati.)
indizi
Sto eseguendo questo all'interno di uno script Python usando sqlalchemy. Tuttavia, ho impostato il livello di transazione su autocommit, quindi non credo che le cose si stiano avvolgendo all'interno di una transazione. D'altra parte, non vedo la query bloccarsi quando la eseguo manualmente nel terminale sql.
Interrogando
pg_stat_activity
, la query inizialmente entra nel database comestate='active'
. Dopo forse 15 secondi, lo stato cambia in 'inattivo' e, inoltre,xact_start
è impostato suNULL
. La bandiera di attesa non è mai impostata su true.Prima di capire l'autocommit a livello di transazione per sqlalchemy, sarebbe invece rimasto nello stato
'idle in transaction'
piuttosto che'idle'
. E forse si blocca leggermente meno frequentemente da quando ha fatto quel cambiamento?
Mi sento come se non fossi equipaggiato per scavare più a fondo di quello che ho su questo. Qualsiasi feedback, anche spiegando di più su diversi stati e relativi postgres interni senza dare una risposta definitiva, sarebbe molto apprezzato.
COMMIT
è stata emessa alcuna richiesta per terminare la transazione. Sembra che il tuo problema potrebbe essere altrove rispetto al db ..