Postgres игнорирует индексы после обновления до 9.5

Недавно мы обновили нашу рабочую БД OLTP (2 ТБ) с версии 9.2.9.21 до 9.5.1.6 с помощью pg_upgrade.

Обновление прошло без происшествий, и мы работали уже неделю, однако обнаружили, что оптимизатор игнорирует индексы в двух наших самых больших секционированных таблицах. (Примечание: проблема отличается от 38943115, данные перенесены без проблем).

Таблицы построены с использованием отдельных индексов Btree для столбцов BIGINT, которые оптимизатор ранее возвращал запросы с точностью до секунды. После обновления запросы занимают до 16 минут (непригодно для наших клиентов). Размер разделов составляет ‹100 ГБ, по 2-3 раздела на таблицу.

Мы заподозрили повреждение индекса и попытались добавить повторяющиеся индексы и проанализировать, однако новые индексы по-прежнему игнорируются, если только мы не принудительно используем enable_seqscan=no или не уменьшаем random_page_cost до 2 (непрактично для всей системы). Время ответа на запрос с использованием новых индексов по-прежнему ужасно (16 минут).

Мы попытались увеличить Effective_cache_size, но безрезультатно. БД работает круглосуточно и без выходных, поэтому мы не можем переиндексировать таблицы/разделы.

Индексы определяются так:

CREATE INDEX table1_column1_index ON table1 USING btree (column1);
CREATE INDEX table1part1_column1_index ON table1 USING btree (column1);
CREATE INDEX table1part2_column1_index ON table1 USING btree (column1);
CREATE INDEX table1part3_column1_index ON table1 USING btree (column1);

.... И повторяется для каждого последующего столбца в запросе (план запроса не использует составные индексы).

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


person bikebore    schedule 25.07.2017    source источник
comment
у тебя автовакуум включен? Кроме того, вы настроили другие переменные, кроме Effective_cache_size? pgconfig.org предоставляет список соответствующих параметров и их значений в зависимости от оперативной памяти и т. д.   -  person Julia Leder    schedule 25.07.2017
comment
Подскажите пожалуйста планы? Определения индекса?   -  person Craig Ringer    schedule 26.07.2017
comment
запустите ANALYZE; в этой базе данных и проверьте еще раз.   -  person Nick    schedule 26.07.2017
comment
Пожалуйста, добавьте определения EXPLAIN (ANALYZE, BUFFERS) выходных данных, таблиц и индексов.   -  person Laurenz Albe    schedule 26.07.2017
comment
План запроса 9.5 находится по адресу explain.depesz.com/s/LS3Gk, план запроса 9.2 находится по адресу explain.depesz.com/s/1Hlh. Определения индекса очень просты   -  person bikebore    schedule 26.07.2017
comment
Хорошо, мы нашли нашу основную проблему - были некоторые таблицы, которые были пропущены при первоначальном анализе. Мы ожидали, что эти разделы таблицы будут подхвачены последующей автоматической очисткой, но, похоже, этого не произошло.   -  person bikebore    schedule 26.07.2017