Индекс поврежден после восстановления базы данных PostgreSQL

Мы используем WAL-E для резервного копирования и восстановления базы данных PostgreSQL (версия 9.5.13). Мы обнаружили, что несколько индексов (не все) были повреждены после восстановления, большинство из них связаны с полями типа String.

Например, используя анализ объяснения, мы видим, что следующий запрос обращается к существующему индексу, который относится к полю foo_name, но не возвращает строк.

select * from foo where foo_name = 'xyz';

Если мы используем like в запросе, он может вернуть ожидаемую строку, так как выполняет полное сканирование таблицы.

select * from foo where foo_name like '%xyz%';

Решение состоит в том, чтобы переиндексировать поврежденные индексы. После переиндексации первый запрос также возвращает ожидаемый результат.

Кто-нибудь встречал такую ​​же проблему раньше? У кого-нибудь есть идеи по поводу первопричины?

0 ответов

Другие вопросы по тегам