Skip to content

Commit 92dd7c4

Browse files
AJR-VMwareoppenheimer01
authored andcommitted
Add gp summary system views
These summary views offer basic aggregation of the gp_stat_* views across Greenplum coordinator and segments. Aggregation logic applied as follows: * Time related (last_%): use max() * Transaction related, not innately summable (number of commits/rollbacks) : use max() * Table specific: sum()/numsegments for replicated tables, sum() for distributed tables * Innately summable stats, if no particular table is involved: use sum() * pid: use coordinator's pid (not used here, but this is the convention in other gp_%_summary views)
1 parent dfb01c8 commit 92dd7c4

2 files changed

Lines changed: 383 additions & 122 deletions

File tree

src/backend/catalog/system_views.sql

Lines changed: 2 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -710,87 +710,6 @@ CREATE VIEW pg_stat_all_tables_internal AS
710710
WHERE C.relkind IN ('r', 't', 'm', 'o', 'b', 'M', 'p')
711711
GROUP BY C.oid, N.nspname, C.relname;
712712

713-
-- Gather data from segments on user tables, and use data on coordinator on system tables.
714-
715-
CREATE VIEW pg_stat_all_tables AS
716-
SELECT
717-
s.relid,
718-
s.schemaname,
719-
s.relname,
720-
m.seq_scan,
721-
m.last_seq_scan,
722-
m.seq_tup_read,
723-
m.idx_scan,
724-
m.last_idx_scan,
725-
m.idx_tup_fetch,
726-
m.n_tup_ins,
727-
m.n_tup_upd,
728-
m.n_tup_del,
729-
m.n_tup_hot_upd,
730-
m.n_tup_newpage_upd,
731-
m.n_live_tup,
732-
m.n_dead_tup,
733-
m.n_mod_since_analyze,
734-
m.n_ins_since_vacuum,
735-
s.last_vacuum,
736-
s.last_autovacuum,
737-
s.last_analyze,
738-
s.last_autoanalyze,
739-
s.vacuum_count,
740-
s.autovacuum_count,
741-
s.analyze_count,
742-
s.autoanalyze_count
743-
FROM
744-
(SELECT
745-
allt.relid,
746-
allt.schemaname,
747-
allt.relname,
748-
case when d.policytype = 'r' then (sum(seq_scan)/d.numsegments)::bigint else sum(seq_scan) end seq_scan,
749-
max(last_seq_scan) as last_seq_scan,
750-
case when d.policytype = 'r' then (sum(seq_tup_read)/d.numsegments)::bigint else sum(seq_tup_read) end seq_tup_read,
751-
case when d.policytype = 'r' then (sum(idx_scan)/d.numsegments)::bigint else sum(idx_scan) end idx_scan,
752-
max(last_idx_scan) as last_idx_scan,
753-
case when d.policytype = 'r' then (sum(idx_tup_fetch)/d.numsegments)::bigint else sum(idx_tup_fetch) end idx_tup_fetch,
754-
case when d.policytype = 'r' then (sum(n_tup_ins)/d.numsegments)::bigint else sum(n_tup_ins) end n_tup_ins,
755-
case when d.policytype = 'r' then (sum(n_tup_upd)/d.numsegments)::bigint else sum(n_tup_upd) end n_tup_upd,
756-
case when d.policytype = 'r' then (sum(n_tup_del)/d.numsegments)::bigint else sum(n_tup_del) end n_tup_del,
757-
case when d.policytype = 'r' then (sum(n_tup_hot_upd)/d.numsegments)::bigint else sum(n_tup_hot_upd) end n_tup_hot_upd,
758-
max(n_tup_newpage_upd) as n_tup_newpage_upd,
759-
case when d.policytype = 'r' then (sum(n_live_tup)/d.numsegments)::bigint else sum(n_live_tup) end n_live_tup,
760-
case when d.policytype = 'r' then (sum(n_dead_tup)/d.numsegments)::bigint else sum(n_dead_tup) end n_dead_tup,
761-
case when d.policytype = 'r' then (sum(n_mod_since_analyze)/d.numsegments)::bigint else sum(n_mod_since_analyze) end n_mod_since_analyze,
762-
case when d.policytype = 'r' then (sum(n_ins_since_vacuum)/d.numsegments)::bigint else sum(n_ins_since_vacuum) end n_ins_since_vacuum,
763-
max(last_vacuum) as last_vacuum,
764-
max(last_autovacuum) as last_autovacuum,
765-
max(last_analyze) as last_analyze,
766-
max(last_autoanalyze) as last_autoanalyze,
767-
max(vacuum_count) as vacuum_count,
768-
max(autovacuum_count) as autovacuum_count,
769-
max(analyze_count) as analyze_count,
770-
max(autoanalyze_count) as autoanalyze_count
771-
FROM
772-
gp_dist_random('pg_stat_all_tables_internal') allt
773-
inner join pg_class c
774-
on allt.relid = c.oid
775-
left outer join gp_distribution_policy d
776-
on allt.relid = d.localoid
777-
WHERE
778-
relid >= 16384
779-
and (
780-
d.localoid is not null
781-
or c.relkind in ('o', 'b', 'M')
782-
)
783-
GROUP BY allt.relid, allt.schemaname, allt.relname, d.policytype, d.numsegments
784-
785-
UNION ALL
786-
787-
SELECT
788-
*
789-
FROM
790-
pg_stat_all_tables_internal
791-
WHERE
792-
relid < 16384) m, pg_stat_all_tables_internal s
793-
WHERE m.relid = s.relid;
794713

795714
CREATE VIEW pg_stat_xact_all_tables AS
796715
SELECT
@@ -822,7 +741,7 @@ CREATE VIEW pg_stat_sys_tables AS
822741
-- since we don't have segments.
823742
-- We create a new view for single node mode.
824743
CREATE VIEW pg_stat_sys_tables_single_node AS
825-
SELECT * FROM pg_stat_all_tables_internal
744+
SELECT * FROM pg_stat_all_tables
826745
WHERE schemaname IN ('pg_catalog', 'information_schema') OR
827746
schemaname ~ '^pg_toast';
828747

@@ -840,7 +759,7 @@ CREATE VIEW pg_stat_user_tables AS
840759
-- since we don't have segments.
841760
-- We create a new view for single node mode.
842761
CREATE VIEW pg_stat_user_tables_single_node AS
843-
SELECT * FROM pg_stat_all_tables_internal
762+
SELECT * FROM pg_stat_all_tables
844763
WHERE schemaname NOT IN ('pg_catalog', 'information_schema') AND
845764
schemaname !~ '^pg_toast';
846765

@@ -910,45 +829,6 @@ CREATE VIEW pg_stat_all_indexes_internal AS
910829
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
911830
WHERE C.relkind IN ('r', 't', 'm', 'o', 'b', 'M');
912831

913-
-- Gather data from segments on user tables, and use data on coordinator on system tables.
914-
915-
CREATE VIEW pg_stat_all_indexes AS
916-
SELECT
917-
s.relid,
918-
s.indexrelid,
919-
s.schemaname,
920-
s.relname,
921-
s.indexrelname,
922-
m.idx_scan,
923-
m.last_idx_scan,
924-
m.idx_tup_read,
925-
m.idx_tup_fetch
926-
FROM
927-
(SELECT
928-
relid,
929-
indexrelid,
930-
schemaname,
931-
relname,
932-
indexrelname,
933-
sum(idx_scan) as idx_scan,
934-
max(last_idx_scan) as last_idx_scan,
935-
sum(idx_tup_read) as idx_tup_read,
936-
sum(idx_tup_fetch) as idx_tup_fetch
937-
FROM
938-
gp_dist_random('pg_stat_all_indexes_internal')
939-
WHERE
940-
relid >= 16384
941-
GROUP BY relid, indexrelid, schemaname, relname, indexrelname
942-
943-
UNION ALL
944-
945-
SELECT
946-
*
947-
FROM
948-
pg_stat_all_indexes_internal
949-
WHERE
950-
relid < 16384) m, pg_stat_all_indexes_internal s
951-
WHERE m.indexrelid = s.indexrelid;
952832

953833
CREATE VIEW pg_stat_sys_indexes AS
954834
SELECT * FROM pg_stat_all_indexes

0 commit comments

Comments
 (0)