pg_statistic
Системная таблица pg_statistic хранит статистические данные о содержимом базы данных.
Записи создаются командой ANALYZE и впоследствии используются оптимизатором запросов.
Для каждого столбца таблицы, который был проанализирован, имеется одна запись.
Заметьте, что все эти данные по природе своей неточные, даже если предполагается, что они актуальны.
pg_statistic также хранит статистические данные о значениях выражений индексов.
Они описываются так, как если бы это были реальные столбцы данных; в частности, starelid ссылается на индекс.
Однако для столбцов, задействованных в индексе без выражений, дополнительная запись не добавляется, так как она повторяла бы запись для нижележащего столбца таблицы.
В настоящее время во всех записях для выражений индексов stainherit = false.
Когда stainherit = false, обычно имеется одна запись для каждого столбца таблицы, для которого была выполнена аналитика.
Если у таблицы есть дочерние таблицы, Greengage DB создает вторую запись с stainherit = true.
Эта строка представляет статистику столбца в дереве наследования, например статистику для данных, которые вы увидите при SELECT column FROM table*, тогда как строка stainherit = false представляет результаты SELECT column FROM ONLY table.
Поскольку для разных типов данных могут подходить разные виды статистики, pg_statistic спроектирован так, чтобы не делать конкретных предположений о том, какая статистика в ней хранится.
Только самая общая статистика (например, доля NULL) имеет выделенные столбцы в pg_statistic.
Все остальное хранится в слотах — группах связанных столбцов, содержимое которых определяется кодовым номером в одном из столбцов слота.
Статистическую информацию о содержимом таблицы следует считать конфиденциальной (например, минимальные и максимальные значения в столбце зарплаты).
pg_stats — общедоступное для чтения представление pg_statistic, которое раскрывает информацию только о тех таблицах, которые доступны для чтения текущему пользователю.
Диагностические инструменты, такие как gpsd и minirepro, собирают конфиденциальную информацию из pg_statistic, например, границы гистограмм, в читаемом виде.
Всегда проверяйте файлы вывода этих утилит, чтобы убедиться, что их содержимое допустимо для передачи за пределы базы данных в вашей организации.
| Столбец | Тип | Ссылки | Описание |
|---|---|---|---|
starelid |
oid |
pg_class.oid |
Таблица или индекс, к которому относится описываемый столбец |
staattnum |
int2 |
pg_attribute.attnum |
Номер описываемого столбца |
stainherit |
boolean |
— |
Если |
stanullfrac |
float4 |
— |
Доля записей столбца, которые равны |
stawidth |
integer |
— |
Средняя длина (в байтах) хранимых для значений, отличных от |
stadistinct |
float4 |
— |
Число различных не- |
stakind*N* |
int2 |
— |
Кодовый номер, указывающий вид статистики, хранящейся в N-м слоте строки |
staop*N* |
oid |
pg_operator.oid |
Оператор, используемый для получения статистики, хранящейся в N-м слоте.
Например, слот гистограммы покажет оператор |
stanumbers*N* |
float4[] |
— |
Числовая статистика подходящего вида для N-го слота или |
stavalues*N* |
anyarray |
— |
Значения данных столбца подходящего типа для N-го слота или |