Системный каталог pg_statistic хранит
статистические данные о содержимом базы данных. Записи создаются с помощью команды ANALYZE
и впоследствии используются планировщиком запросов. Обратите внимание, что все статистические данные по своей сути являются приблизительными, даже при условии их актуальности.
Обычно для каждого проанализированного столбца таблицы создается одна запись с параметром stainherit =
false.
Если у таблицы имеются дочерние таблицы или секции, также создается вторая запись с
stainherit = true is also created. Эта строка
представляет статистику столбца по всему дереву наследования, то есть
статистику данных, которые были бы получены при выполнении запроса
SELECT ,
тогда как строка с параметром column FROM table*stainherit = false отражает
результаты выполнения команды
SELECT .
column FROM ONLY table
pg_statistic также хранит статистические данные о значениях выражений в индексах. Они описываются так, как если бы они были
фактическими столбцами данных; в частности, starelid
ссылается на индекс. Тем не менее, записи для обычного (не являющегося выражением) столбца индекса не создаются, так как они были бы избыточны по отношению к записям для соответствующего столбца таблицы. В настоящее время записи для индексных выражений
всегда имеют stainherit = false.
Поскольку для различных типов данных могут подходить разные виды статистических данных, pg_statistic спроектирован так, чтобы не накладывать строгих ограничений на тип хранимой статистики. В системном каталоге выделены отдельные столбцы только для наиболее общих статистических данных (таких как наличие значений NULL) в pg_statistic. Вся остальная информация хранится в «слотах», которые представляют собой группы связанных столбцов, содержимое которых идентифицируется кодовым числом в одном из столбцов слота. Для получения дополнительной информации см.
src/include/catalog/pg_statistic.h.
pg_statistic не должен быть доступен для общего чтения, так как даже статистическая информация о содержимом таблицы может считаться конфиденциальной. (Пример: минимальное и максимальное значения
в столбце зарплаты могут представлять определенный интерес.)
pg_stats
является общедоступным представлением для
pg_statistic который предоставляет информацию только о тех таблицах, которые доступны для чтения текущему пользователю.
Таблица 7.2.51. pg_statistic Столбцы
Тип столбца Описание |
|---|
Таблица или индекс, к которым относится описываемый столбец |
Номер описываемого столбца |
Если значение истинно (true), статистика включает данные из дочерних таблиц, а не только значения из указанного отношения |
Доля записей в столбце, содержащих значения NULL |
Средняя ширина (в байтах) записей, отличных от NULL |
Количество уникальных значений в столбце, отличных от NULL.
Значение больше нуля является фактическим количеством уникальных значений.
Значение меньше нуля представляет собой взятый с отрицательным знаком множитель для общего числа
строк в таблице; например, столбец, в котором около 80%
значений не являются NULL и каждое такое значение встречается в среднем
дважды, может быть описан значением |
Код, указывающий тип статистики, хранящейся в
|
Оператор, используемый для получения статистических данных, хранящихся в
|
Правило сортировки, используемое для получения статистических данных, хранящихся в
|
Числовая статистика соответствующего вида для
|
Значения данных столбца соответствующего вида для
|