1.7Kпросмотров
59.1%от подписчиков
19 ноября 2025 г.
Score: 1.9K
🔬 Системный каталог PostgreSQL (ч. 2). Продолжаем исследовать полезные представления системного каталога PostgreSQL. Поехали дальше! pg_stat_user_tables Это представление предоставляет статистику по таблицам, включая последовательные сканирования, сканирования по индексам и операции на уровне строк (вставки, обновления, удаления). Оно отлично подходит для выявления таблиц с высокой нагрузкой или тех, которые требуют вакуумизации. Пример запроса, который покажет последовательные сканирования и сканирования по индексам по таблицам: SELECT relname AS table_name, seq_scan, idx_scan
FROM pg_stat_user_tables
WHERE seq_scan > 0 OR idx_scan > 0 ORDER BY seq_scan DESC; pg_stat_user_indexes Это представление предоставляет статистику по пользовательским индексам, такую как частота их использования и количество прочитанных кортежей. Это особенно полезно для поиска неиспользуемых или недостаточно используемых индексов. Пример запроса, который покажет никогда не использованные индексы в Postgres, отсортированные по размеру: SELECT s.schemaname, s.relname AS table_name, s.indexrelname AS index_name, pg_size_pretty(pg_relation_size(s.indexrelid)) AS index_size, s.idx_scan
FROM pg_stat_user_indexes AS s
JOIN pg_index AS i ON s.indexrelid = i.indexrelid
WHERE s.idx_scan = 0 AND i.indisunique IS FALSE
ORDER BY pg_relation_size(s.indexrelid) DESC; pg_settings Это встроенное представление, которое очень полезно для просмотра параметров конфигурации, их текущих значений и описаний. Используйте ILIKE для поиска конкретных параметров. Найти настройки shared_buffer или work_mem: SELECT name, setting, unit, short_desc
FROM pg_settings
WHERE name LIKE '%shared_buffers%' OR name LIKE '%work_mem%'; pg_roles Это представление описывает все системные роли, которые включают пользователей и группы. Оно полезно для проверки прав доступа, возможности входа и членства в ролях. Этот запрос выводит список всех ролей, показывая их имена, возможность входа и срок действия пароля: SELECT rolname, rolcanlogin, rolvaliduntil
FROM pg_roles
ORDER BY rolname; pg_database Это представление содержит все базы данных в кластере. Оно предоставляет ключевую метаинформацию для каждой базы данных, включая её владельца, кодировку символов и права доступа. Сейчас многие создают десятки, а иногда и сотни баз данных для разработки, так что это хороший общий обзор. Этот запрос выводит список всех баз данных Postgres, их размеры и владельцев: SELECT d.datname AS database_name, pg_size_pretty(pg_database_size(d.datname)) AS database_size, pg_get_userbyid(d.datdba) AS owner
FROM pg_database AS d
WHERE d.datistemplate = false; В финальной, третьей заметке по системному каталогу мы посмотрим еще на некоторые полезные таблицы и представления и научимся паре трюков ☺️ На этом все! До связи! #pgbase #queries