У меня есть таблица, которая изначально разделена по дням. В конце каждого дня больше записей не будет добавляться в этот раздел, поэтому я кластеризирую индекс, а затем выполняю много обработки и агрегирования чисел в этой таблице (используя кластеризованный индекс):
CLUSTER table_a_20181104 USING table_a_20181104_index1;
Через несколько дней (обычно неделю) я объединяю раздел на один день с большим разделом, который содержит все данные о днях за этот месяц. Я использую этот SQL для достижения этого:
WITH moved_rows AS
(
DELETE FROM table_a_20181104
RETURNING *
)
INSERT INTO table_a_201811
SELECT * FROM moved_rows;
Примерно через месяц или даже больше я меняю табличное пространство, чтобы переместить данные с SSD-диска на обычный магнитный жесткий диск.
ALTER TABLE ... SET TABLESPACE ...
Моя первоначальная кластеризация индекса в конце дня определенно улучшает производительность запросов, выполняемых против него.
Я знаю, что кластеризация является одноразовой командой и должна повторяться, если новые записи добавляются / удаляются.
Мои вопросы:
- Нужно ли повторять кластеризацию после слияния раздела 'day' с разделом 'month'?
- Нужно ли повторять кластеризацию после изменения табличного пространства?
- Нужно ли повторять кластеризацию, если я
VACUUM
раздел?