Technologies/PostgreSQL/postgresql.activity.xact_start_age
PostgreSQLPostgreSQLMetric

postgresql.activity.xact_start_age

Transaction start age
Dimensions:None
Available on:Native (1)DatadogDatadog (1)
Interface Metrics (2)
Native
xact_start statistic from pg_stat_activity
Dimensions:None
DatadogDatadog
The age of the oldest active transactions. This metric (by default) is tagged with db, app, user.
Dimensions:None

Technical Annotations (22)

Configuration Parameters (2)
statement_timeout
Prevents unbounded query execution that blocks freezing
idle_in_transaction_session_timeout
Terminates idle transactions holding old snapshots
CLI Commands (7)
SELECT blocked_locks.pid AS blocked_pid, blocking_locks.pid AS blocking_pid, blocked_activity.usename AS blocked_user, blocking_activity.usename AS blocking_user, now() - blocked_activity.xact_start AS blocked_transaction_duration, now() - blocking_activity.xact_start AS blocking_transaction_duration, concat(blocked_activity.wait_event_type,':',blocked_activity.wait_event) AS blocked_wait_event, concat(blocking_activity.wait_event_type,':',blocking_activity.wait_event) AS blocking_wait_event, blocked_activity.state AS blocked_state, blocking_activity.state AS blocking_state, blocked_locks.locktype AS blocked_locktype, blocking_locks.locktype AS blocking_locktype, blocked_activity.query AS blocked_statement, blocking_activity.query AS blocking_statement FROM pg_catalog.pg_locks blocked_locks JOIN pg_catalog.pg_stat_activity blocked_activity ON blocked_activity.pid = blocked_locks.pid JOIN pg_catalog.pg_locks blocking_locks ON blocking_locks.locktype = blocked_locks.locktype AND blocking_locks.DATABASE IS NOT DISTINCT FROM blocked_locks.DATABASE AND blocking_locks.relation IS NOT DISTINCT FROM blocked_locks.relation AND blocking_locks.page IS NOT DISTINCT FROM blocked_locks.page AND blocking_locks.tuple IS NOT DISTINCT FROM blocked_locks.tuple AND blocking_locks.virtualxid IS NOT DISTINCT FROM blocked_locks.virtualxid AND blocking_locks.transactionid IS NOT DISTINCT FROM blocked_locks.transactionid AND blocking_locks.classid IS NOT DISTINCT FROM blocked_locks.classid AND blocking_locks.objid IS NOT DISTINCT FROM blocked_locks.objid AND blocking_locks.objsubid IS NOT DISTINCT FROM blocked_locks.objsubid AND blocking_locks.pid != blocked_locks.pid JOIN pg_catalog.pg_stat_activity blocking_activity ON blocking_activity.pid = blocking_locks.pid WHERE NOT blocked_locks.GRANTED;diagnostic
SELECT pid, now() - pg_stat_activity.query_start AS duration, query, state FROM pg_stat_activity WHERE state != 'idle' AND query NOT ILIKE '%pg_stat_activity%' ORDER BY duration DESC;diagnostic
SELECT * FROM pg_stat_activity WHERE state = 'active' AND query_start < NOW() - INTERVAL '30 seconds';diagnostic
psmonitoring
topmonitoring
iostatmonitoring
vmstatmonitoring
Technical References (13)
contiguous member spacecomponentvacuumcomponentadvisory lock ID spaceconceptpg_stat_activitycomponentpg_lockscomponentwait_eventcomponentwait_event_typecomponentlock contentionconceptpg_stat_replicationcomponentpg_stat_databasecomponentpg_stat_iocomponentEXPLAINcomponentcumulative statistics systemconcept
Related Insights (7)
Long-running or idle transactions prevent transaction ID freezingwarning
Long-running transactions prevent contiguous MultiXact member space reclamationwarning
Advisory lock conflicts from unintended shared lock ID space between application componentswarning
Blocked sessions waiting for advisory locks held by other sessionswarning
Long-running queries cause lock contention and block other operationscritical
Long-running queries block resources and degrade performancewarning
Statistics collection views provide core monitoring data for PostgreSQL operationsinfo