Индекс поврежден после восстановления базы данных PostgreSQL - PullRequest
0 голосов
/ 25 июня 2018

Мы используем 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%';

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

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

...