Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd29ff58

Browse files
Fix index bloat metrics for user schemas by replacing pg_stats with public.pg_statistic view
1 parentd929077 commitd29ff58

File tree

3 files changed

+30
-16
lines changed

3 files changed

+30
-16
lines changed

‎README.md‎

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,20 @@ grant select on pg_stat_statements to postgres_ai_mon;
2020
grantselecton pg_stat_database to postgres_ai_mon;
2121
grantselecton pg_stat_user_tables to postgres_ai_mon;
2222

23-
-- Create a public view for pg_statistic access for bloat metrics
23+
-- Create a public view for pg_statistic access(requiredfor bloat metrics on user schemas)
2424
CREATEVIEWpublic.pg_statisticAS
25-
SELECTpg_statistic.stawidth,
26-
pg_statistic.stanullfrac,
27-
pg_statistic.starelid,
28-
pg_statistic.staattnum
29-
FROM pg_statistic;
25+
SELECT
26+
n.nspnameas schemaname,
27+
c.relnameas tablename,
28+
a.attname,
29+
s.stanullfracas null_frac,
30+
s.stawidthas avg_width,
31+
falseas inherited
32+
FROM pg_statistic s
33+
JOIN pg_class cONc.oid=s.starelid
34+
JOIN pg_namespace nONn.oid=c.relnamespace
35+
JOIN pg_attribute aONa.attrelid=s.starelidANDa.attnum=s.staattnum
36+
WHEREa.attnum>0AND NOTa.attisdropped;
3037

3138
GRANTSELECTONpublic.pg_statistic TO pg_monitor;
3239
ALTERUSER postgres_ai_monset search_path="$user", public, pg_catalog;

‎config/pgwatch-prometheus/metrics.yml‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1512,9 +1512,9 @@ metrics:
15121512
and a2.attnum = ic.attpos
15131513
) i
15141514
join pg_catalog.pg_namespace n on n.oid = i.relnamespace
1515-
joinpg_catalog.pg_stats s on s.schemaname = n.nspname
1516-
and s.tablename = i.attrelname
1517-
and s.attname = i.attname
1515+
joinpublic.pg_statistic s on s.schemaname = n.nspname
1516+
and s.tablename = i.attrelname
1517+
and s.attname = i.attname
15181518
group by 1,2,3,4,5,6,7,8,9,10,11
15191519
) as rows_data_stats
15201520
) as rows_hdr_pdg_stats
@@ -1583,7 +1583,7 @@ metrics:
15831583
from pg_attribute as att
15841584
join pg_class as tbl on att.attrelid = tbl.oid
15851585
join pg_namespace as ns on ns.oid = tbl.relnamespace
1586-
left joinpg_stats as s on s.schemaname=ns.nspname
1586+
left joinpublic.pg_statistic as s on s.schemaname=ns.nspname
15871587
and s.tablename = tbl.relname and s.inherited=false and s.attname=att.attname
15881588
left join pg_class as toast on tbl.reltoastrelid = toast.oid
15891589
where not att.attisdropped

‎config/target-db/init.sql‎

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,19 @@ GRANT CONNECT ON DATABASE target_database TO monitor;
2121
GRANT USAGEON SCHEMA public TO monitor;
2222

2323
-- Create a public view for pg_statistic access
24-
CREATEVIEWpublic.pg_statisticAS
25-
SELECTpg_statistic.stawidth,
26-
pg_statistic.stanullfrac,
27-
pg_statistic.starelid,
28-
pg_statistic.staattnum
29-
FROM pg_statistic;
24+
CREATE OR REPLACEVIEWpublic.pg_statisticAS
25+
SELECT
26+
n.nspnameas schemaname,
27+
c.relnameas tablename,
28+
a.attname,
29+
s.stanullfracas null_frac,
30+
s.stawidthas avg_width,
31+
falseas inherited
32+
FROM pg_statistic s
33+
JOIN pg_class cONc.oid=s.starelid
34+
JOIN pg_namespace nONn.oid=c.relnamespace
35+
JOIN pg_attribute aONa.attrelid=s.starelidANDa.attnum=s.staattnum
36+
WHEREa.attnum>0AND NOTa.attisdropped;
3037

3138
-- Grant specific access instead of all tables
3239
GRANTSELECTONpublic.pg_statistic TO pg_monitor;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp