Недавно мы обновили нашу рабочую БД 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);
.... И повторяется для каждого последующего столбца в запросе (план запроса не использует составные индексы).
Кто-нибудь сталкивался с этим или может предложить какие-либо дальнейшие действия?
ANALYZE
d? См. раздел Низкая производительность после обновления PostreSQL с 9.1 до 9.4. а>. Можете ли вы опубликовать некоторые из ваших результатовEXPLAIN ANALYZE
, чтобы увидеть, есть ли огромные промахи? - person joanolo   schedule 26.07.2017ANALYZE;
в этой базе данных и проверьте еще раз. - person Nick   schedule 26.07.2017EXPLAIN (ANALYZE, BUFFERS)
выходных данных, таблиц и индексов. - person Laurenz Albe   schedule 26.07.2017