Skip to content

Commit 6956aca

Browse files
author
Dementii Priadko
committed
perf(metrics): filter queries by current_database to reduce VM load
1 parent 09d444b commit 6956aca

File tree

2 files changed

+22
-9
lines changed

2 files changed

+22
-9
lines changed

config/pgwatch-postgres/metrics.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ metrics:
88
queryid,
99
query
1010
from pg_stat_statements
11-
where queryid is not null
11+
where
12+
queryid is not null
13+
and dbid = (select oid from pg_database where datname = current_database())
1214
order by total_exec_time desc
1315
limit 1000;
1416
gauges:

config/pgwatch-prometheus/metrics.yml

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -811,7 +811,9 @@ metrics:
811811
else relation::regclass::text
812812
end as tag_table
813813
from pg_catalog.pg_locks blocked
814-
where not blocked.granted
814+
where
815+
not blocked.granted
816+
and database = (select oid from pg_database where datname = current_database())
815817
group by locktype, relation
816818
limit 5000
817819
gauges:
@@ -841,7 +843,11 @@ metrics:
841843
count(*) as transactions,
842844
coalesce(max(extract(epoch from (clock_timestamp() - xact_start)))::int8, 0) as age_in_seconds
843845
from pg_catalog.pg_stat_activity
844-
where state is distinct from 'idle' and (now() - xact_start) > '1 minutes'::interval and query not like 'autovacuum:%'
846+
where
847+
state is distinct from 'idle'
848+
and datname = current_database()
849+
and (clock_timestamp() - xact_start) > '1 minutes'::interval
850+
and query not like 'autovacuum:%'
845851
gauges:
846852
- '*'
847853
statement_timeout_seconds: 15
@@ -890,8 +896,8 @@ metrics:
890896
sum(current_setting('block_size')::int * pg_stat_statements.temp_blks_read) as temp_bytes_read,
891897
sum(current_setting('block_size')::int * pg_stat_statements.temp_blks_written) as temp_bytes_written
892898
from pg_stat_statements
893-
join pg_database
894-
on pg_database.oid = pg_stat_statements.dbid
899+
join pg_database on pg_database.oid = pg_stat_statements.dbid
900+
where pg_database.datname = current_database()
895901
group by pg_database.datname, pg_stat_statements.queryid
896902
)
897903
select
@@ -936,8 +942,8 @@ metrics:
936942
sum(current_setting('block_size')::int * pg_stat_statements.temp_blks_read) as temp_bytes_read,
937943
sum(current_setting('block_size')::int * pg_stat_statements.temp_blks_written) as temp_bytes_written
938944
from pg_stat_statements
939-
join pg_database
940-
on pg_database.oid = pg_stat_statements.dbid
945+
join pg_database on pg_database.oid = pg_stat_statements.dbid
946+
where pg_database.datname = current_database()
941947
group by pg_database.datname, pg_stat_statements.queryid
942948
)
943949
select
@@ -1129,7 +1135,10 @@ metrics:
11291135
11: |
11301136
select current_database() as tag_datname, count(*) as queries /* pgwatch_generated */
11311137
from pg_catalog.pg_stat_activity
1132-
where state = 'idle in transaction' and (now() - query_start) > '10 minutes'::interval
1138+
where
1139+
state = 'idle in transaction'
1140+
and datname = current_database()
1141+
and (clock_timestamp() - state_change) > '1 minutes'::interval
11331142
gauges:
11341143
- queries
11351144
statement_timeout_seconds: 15
@@ -2027,14 +2036,15 @@ metrics:
20272036
S.heap_blks_scanned::float,
20282037
S.heap_blks_vacuumed::float,
20292038
S.index_vacuum_count::float,
2030-
(S.max_dead_tuples / 1024 / 1024)::float as max_dead_tuples_mb,
2039+
(S.max_dead_tuples::float / 1024 / 1024) as max_dead_tuples_mb,
20312040
S.num_dead_tuples::float as num_dead_item_ids
20322041
from
20332042
pg_stat_progress_vacuum as S
20342043
join pg_database D on (S.datid = D.oid)
20352044
join pg_stat_activity as A on (S.pid = A.pid)
20362045
join pg_class C on (C.oid = S.relid)
20372046
join pg_namespace N on (N.oid = C.relnamespace)
2047+
where D.datname = current_database()
20382048
17: |
20392049
select /* pgwatch_generated */
20402050
current_database() as tag_datname,
@@ -2079,6 +2089,7 @@ metrics:
20792089
join pg_stat_activity as A on (S.pid = A.pid)
20802090
join pg_class C on (C.oid = S.relid)
20812091
join pg_namespace N on (N.oid = C.relnamespace)
2092+
where D.datname = current_database()
20822093
gauges:
20832094
- '*'
20842095
statement_timeout_seconds: 15

0 commit comments

Comments
 (0)