Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
IPC: ProcArrayGroupUpdate
L'IPC:ProcArrayGroupUpdateevento si verifica quando una sessione è in attesa che il capogruppo aggiorni lo stato della transazione al termine dell'operazione. Sebbene PostgreSQL generalmente associ eventi di attesa di tipo IPC a operazioni di query parallele, questo particolare evento di attesa non è specifico delle query parallele.
Versioni del motore supportate
Queste informazioni relative all’evento di attesa sono supportate per tutte le versioni di RDS per PostgreSQL.
Contesto
Comprendere l'array di processi — L'array process (proc) è una struttura di memoria condivisa in PostgreSQL. Contiene informazioni su tutti i processi in esecuzione, inclusi i dettagli delle transazioni. Durante il completamento della transazione (COMMIToROLLBACK), ProcArray deve essere aggiornato per riflettere la modifica e cancellare il TransactionID dall'array. La sessione che tenta di completare la transazione deve acquisire un blocco esclusivo su. ProcArray Ciò impedisce ad altri processi di ottenere blocchi condivisi o esclusivi su di esso.
Meccanismo di aggiornamento di gruppo: durante l'esecuzione di un COMMIT o ROLLBACK, se un processo di backend non riesce a ottenerne uno ProcArrayLock in modalità esclusiva, aggiorna un campo speciale chiamato. ProcArrayGroupMember Ciò aggiunge la transazione all'elenco delle sessioni che intendono terminare. Questo processo di backend quindi dorme e il tempo in cui dorme viene utilizzato come evento di attesa. ProcArrayGroupUpdate Il primo processo ProcArray con procArrayGroup Member, denominato processo leader, acquisisce la modalità esclusiva. ProcArrayLock Quindi cancella l'elenco dei processi in attesa della cancellazione del gruppo TransactionID. Una volta completata questa operazione, il leader rilascia ProcArrayLock e quindi riattiva tutti i processi in questo elenco, notificando loro che la transazione è stata completata.
Probabili cause di aumento delle attese
Maggiore è il numero di processi in esecuzione, più a lungo un leader rimarrà aggrappato procArrayLock a una modalità esclusiva. Di conseguenza, più transazioni di scrittura finiscono in uno scenario di aggiornamento di gruppo, causando un potenziale accumulo di processi in attesa dell'evento di ProcArrayGroupUpdate attesa. Nella visualizzazione SQL principale di Database Insights, vedrete che COMMIT è l'istruzione con la maggior parte di questo evento di attesa. Ciò è previsto, ma richiederà un'analisi più approfondita dello specifico SQL di scrittura in esecuzione per determinare l'azione appropriata da intraprendere.
Azioni
Consigliamo azioni diverse a seconda delle cause dell’evento di attesa. Identifica IPC:ProcArrayGroupUpdate gli eventi utilizzando Amazon RDS Performance Insights o interrogando la vista del sistema PostgreSQL. pg_stat_activity
Argomenti
Monitoraggio delle operazioni di conferma e rollback delle transazioni
Monitora i commit e i rollback: un numero maggiore di commit e rollback può comportare una maggiore pressione su. ProcArray Ad esempio, se un'istruzione SQL inizia a fallire a causa di un aumento delle violazioni di chiavi duplicate, è possibile che si verifichi un aumento dei rollback che può aumentare la contesa e il sovraccarico delle tabelle. ProcArray
Amazon RDS Database Insights fornisce i xact_commit parametri di PostgreSQL e riporta il numero di commit xact_rollback e rollback al secondo.
Ridurre la concorrenza
Transazioni in batch: ove possibile, operazioni in batch in singole transazioni per ridurre commit/rollback le operazioni.
Limita la concorrenza: riduci il numero di transazioni attive contemporaneamente per alleviare la contesa tra blocchi su. ProcArray Sebbene richiederà alcuni test, la riduzione del numero totale di connessioni simultanee può ridurre i conflitti e mantenere la velocità effettiva.
Implementazione del pool di connessioni
Soluzioni di pool di connessioni: utilizza il pool di connessioni per gestire in modo efficiente le connessioni al database, riducendo il numero totale di backend e quindi il carico di lavoro sul. ProcArray Sebbene richieda alcuni test, la riduzione del numero totale di connessioni simultanee può ridurre i conflitti e mantenere la velocità effettiva.
Riduci le tempeste di connessione: allo stesso modo, uno schema di creazione e interruzione frequenti delle connessioni causa una pressione aggiuntiva su. ProcArray Riducendo questo modello, si riduce la contesa complessiva.
Utilizzo di uno storage più veloce
Volume di registro dedicato: se l'evento di IPC:ProcArrayGroupUpdate attesa è accompagnato da eventi di IO:WALWrite attesa elevati, l'impostazione di un volume di registro dedicato può ridurre il collo di bottiglia nella scrittura su WAL. A sua volta, ciò migliora le prestazioni dei commit.
Per ulteriori informazioni, consulta Volume di registro dedicato.