Оновлення PostgreSQL 14.4 з виправленням пошкодження індексів

Сформовано коригуючий випуск СУБД PostgreSQL 14.4, у якому усунута серйозна проблема, що при певних обставинах призводить до непомітного пошкодження даних в індексах при виконанні команд CREATE INDEX CONCURRENTLY і REINDEX CONCURRENTLY. У створених за допомогою зазначених команд індексах можуть бути не враховані деякі записи, що призведе до пропуску окремих рядків під час виконання SELECT-запитів із залученням проблемних індексів.

Для визначення факту пошкодження індексів B-tree можна використовувати команду pg_amcheck -heapallindexed ім'я_БД. У разі виявлення помилок або застосування в попередніх випусках команд CREATE INDEX CONCURRENTLY та REINDEX CONCURRENTLY з іншими типами індексів (GiST, GIN тощо) після оновлення до версії 14.4 рекомендується виконати переіндексацію утилітою reindexdb —all або командою "REINDEX CONCURRENTLY ім'я_індексу".

Проблемі схильна лише гілка 14.x, в яку були включені оптимізації, що виключають при виконанні операції VACUUM деякі транзакції, пов'язані з виконанням CREATE INDEX CONCURRENTLY і REINDEX CONCURRENTLY. В результаті застосування цих оптимізації в створені в режимі «CONCURRENTLY» індекси не потрапляли деякі кортежі, що знаходяться в heap-пам'яті, які були оновлені або урізані під час створення індексу.

Джерело: opennet.ru

Додати коментар або відгук