На меня произвели впечатление улучшения производительности, достигнутые с помощью кластеризации, но не от того, сколько времени это займет.
Я знаю, что кластеризацию необходимо перестраивать, если после кластеризации изменяется таблица или раздел, но еслиКогда я последний раз кластеризовал таблицу, я отметил, как я могу узнать, когда мне нужно сделать это снова?
Я могу использовать этот запрос, чтобы сказать мне, какие таблицы имеют одну или несколько кластеризованных таблиц.индексы
SELECT *
FROM pg_class c
JOIN pg_index i ON i.indrelid = c.oid
WHERE relkind = 'r' AND relhasindex AND i.indisclustered
Мои вопросы.
- Как узнать, какие индексы были кластеризованы?
- Есть ли способ точно определить, когда таблицапоследний раз кластеризовался?
- Как определить, является ли кластеризованный индекс все еще «действительным», или, другими словами, как определить, насколько сильно изменились таблица / индекс, и мне нужно перестроить кластер?.
Я заметил, что перестройка кластеризованного индекса занимает столько же времени, сколько и его построение (даже если за это время таблица не была затронута).).Поэтому я хочу избежать повторной кластеризации, если я не знаю, что таблица нуждается в этом.
ОБНОВЛЕНИЕ для ясности (я надеюсь)
Если я использую эту команду ....
CLUSTER tableA USING tableA_idx1;
- Как узнать позже, на какой индекс ссылались, например на tableA_idx1 (для таблицы определено несколько индексов)?
- Записано ли оно где-нибудь , когда эта команда была выполнена?
- Я знаю, что, возможно, потребуется перестроить / обновить / воссоздать кластер (не уверен в правильной фразеологии), иногда используя CLUSTER tableA , когда таблица подвергается изменениям.Есть ли способ узнать, когда таблица изменилась настолько, что кластеризация больше не помогает?