У нас есть таблица с почти 2 миллиардами записанных событий. Согласно нашей модели данных, каждое событие уникально идентифицируется с помощью 4 столбцов объединенного первичного ключа. Исключая первичный ключ, существует 5 индексов B-дерева, каждый на один столбец. Всего 6 индексов B-дерева.
Записанные события охватывают годы, и теперь нам нужно удалить данные старше 1 года.
У нас есть столбец time
с длинными значениями, записанными для каждого события. И мы используем следующий запрос,
delete from events where ctid = any ( array (select ctid from events where time < 1517423400000 limit 10000) )
Обновляются ли индексы?
Во время тестирования это не так.
После вставки
total_table_size - 27893760
table_size - 7659520
index_size - 20209664
После удаления
total_table_size - 20226048
table_size - 0
index_size - 20209664