pg_stat_all_tables
Представление pg_stat_all_tables показывает по одной строке для каждой таблицы в текущей базе данных (включая TOAST-таблицы) и отображает статистику обращений к данной таблице.
Представления pg_stat_user_tables и pg_stat_sys_tables содержат ту же информацию, но отфильтрованы так, чтобы показывать только пользовательские и системные таблицы соответственно.
В Greengage DB 6 представления pg_stat_*_tables отображают статистику доступа к таблицам только на мастере.
Статистика доступа из сегмент-инстансов игнорируется.
Вы можете создать представления, которые отображают статистику использования (см. Статистика доступа к таблицам на мастере и сегментах).
| Столбец | Тип | Описание |
|---|---|---|
relid |
oid |
OID таблицы |
schemaname |
name |
Имя схемы, в которой находится таблица |
relname |
name |
Имя таблицы |
seq_scan |
bigint |
Общее количество последовательных сканирований, выполненных для данной таблицы всеми сегментами |
seq_tup_read |
bigint |
Количество актуальных строк, извлеченных при последовательных сканированиях |
idx_scan |
bigint |
Общее количество сканирований индексов, выполненных для данной таблицы всеми сегментами |
idx_tup_fetch |
bigint |
Количество актуальных строк, извлеченных при сканированиях по индексам |
n_tup_ins |
bigint |
Количество вставленных строк |
n_tup_upd |
bigint |
Количество обновленных строк (включая HOT-обновления) |
n_tup_del |
bigint |
Количество удаленных строк |
n_tup_hot_upd |
bigint |
Количество строк, обновленных с помощью HOT (без отдельного обновления индекса) |
n_live_tup |
bigint |
Оценочное количество актуальных строк |
n_dead_tup |
bigint |
Оценочное количество устаревших строк |
n_mod_since_analyze |
bigint |
Оценочное количество строк, измененных с момента последнего анализа таблицы |
last_vacuum |
timestamp with time zone |
Время последнего ручного вакуумирования таблицы (не учитывается |
last_autovacuum |
timestamp with time zone |
Время последнего вакуумирования таблицы демоном |
last_analyze |
timestamp with time zone |
Время последнего ручного анализа таблицы |
last_autoanalyze |
timestamp with time zone |
Время последнего анализа таблицы демоном |
vacuum_count |
bigint |
Количество ручных вакуумирований таблицы (не учитывается |
autovacuum_count |
bigint |
Количество вакуумирований, выполненных демоном |
analyze_count |
bigint |
Количество ручных анализов таблицы |
autoanalyze_count |
bigint |
Количество анализов, выполненных демоном |
В Greengage DB демон autovacuum отключен и не поддерживается для пользовательских баз данных.
Статистика доступа к таблицам на мастере и сегментах
Чтобы отобразить статистику доступа к таблицам, объединяющую статистику с мастера и сегментов, можно создать эти представления.
Для их использования пользователю требуется привилегия SELECT на эти представления.
CREATE VIEW pg_stat_all_tables_ggdb AS
SELECT
s.relid,
s.schemaname,
s.relname,
m.seq_scan,
m.seq_tup_read,
m.idx_scan,
m.idx_tup_fetch,
m.n_tup_ins,
m.n_tup_upd,
m.n_tup_del,
m.n_tup_hot_upd,
m.n_live_tup,
m.n_dead_tup,
s.n_mod_since_analyze,
s.last_vacuum,
s.last_autovacuum,
s.last_analyze,
s.last_autoanalyze,
s.vacuum_count,
s.autovacuum_count,
s.analyze_count,
s.autoanalyze_count
FROM
(SELECT
relid,
schemaname,
relname,
sum(seq_scan) as seq_scan,
sum(seq_tup_read) as seq_tup_read,
sum(idx_scan) as idx_scan,
sum(idx_tup_fetch) as idx_tup_fetch,
sum(n_tup_ins) as n_tup_ins,
sum(n_tup_upd) as n_tup_upd,
sum(n_tup_del) as n_tup_del,
sum(n_tup_hot_upd) as n_tup_hot_upd,
sum(n_live_tup) as n_live_tup,
sum(n_dead_tup) as n_dead_tup,
max(n_mod_since_analyze) as n_mod_since_analyze,
max(last_vacuum) as last_vacuum,
max(last_autovacuum) as last_autovacuum,
max(last_analyze) as last_analyze,
max(last_autoanalyze) as last_autoanalyze,
max(vacuum_count) as vacuum_count,
max(autovacuum_count) as autovacuum_count,
max(analyze_count) as analyze_count,
max(autoanalyze_count) as autoanalyze_count
FROM gp_dist_random('pg_stat_all_tables')
WHERE relid >= 16384
GROUP BY relid, schemaname, relname
UNION ALL
SELECT *
FROM pg_stat_all_tables
WHERE relid < 16384) m, pg_stat_all_tables s
WHERE m.relid = s.relid;
CREATE VIEW pg_stat_sys_tables_ggdb AS
SELECT * FROM pg_stat_all_tables_ggdb
WHERE schemaname IN ('pg_catalog', 'information_schema') OR
schemaname ~ '^pg_toast';
CREATE VIEW pg_stat_user_tables_ggdb AS
SELECT * FROM pg_stat_all_tables_ggdb
WHERE schemaname NOT IN ('pg_catalog', 'information_schema') AND
schemaname !~ '^pg_toast';