Проверка настроек fillfactor для таблиц и индексов
Может быть, есть какая-то функция для проверки фактора заполнения для индексов и таблиц? Я уже пробовал \ d +, но имею только базовое определение, без значения fillfactor:
Index "public.tab1_pkey"
Column | Type | Definition | Storage
--------+--------+------------+---------
id | bigint | id | plain
primary key, btree, for table "public.tab1"
Для таблиц ничего не нашел. Если таблица была создана с фактором заполнения, отличным от значения по умолчанию:
CREATE TABLE distributors (
did integer,
name varchar(40),
UNIQUE(name) WITH (fillfactor=70)
)
WITH (fillfactor=70);
затем \d+ distributors
показывает нестандартный коэффициент заполнения.
Table "public.distributors"
Column | Type | Modifiers | Storage | Stats target | Description
--------+-----------------------+-----------+----------+--------------+-------------
did | integer | | plain | |
name | character varying(40) | | extended | |
Indexes:
"distributors_name_key" UNIQUE CONSTRAINT, btree (name) WITH (fillfactor=70)
Has OIDs: no
Options: fillfactor=70
Но, может быть, есть способ получить это значение без разбора вывода?
1 ответ
Решение
Вам нужно запросить pg_class
системная таблица:
select t.relname as table_name,
t.reloptions
from pg_class t
join pg_namespace n on n.oid = t.relnamespace
where t.relname in ('tab11_pkey', 'tab1')
and n.nspname = 'public'
reloptions
массив, каждый элемент которого содержит один option=value
определение. Но это будет нулевым для отношений, которые имеют параметры по умолчанию.