Мы периодически наблюдаем, что создание GIN-индекса на post_search_data приводит к множеству блокировок Lock:relations в Performance Insight. Завершение сессии, создающей этот индекс, освобождает все заблокированные сессии. Примечательно, что индекс создается с использованием ключевого слова “concurrently”, которое, по идее, не должно блокировать операции. Также интересно, почему к имени индекса добавляется префикс temp.
CREATE INDEX CONCURRENTLY temp_idx_recent_regular_post_search_data ON post_search_data USING GIN(search_data) WHERE NOT private_message AND post_id >= 12431619
Я также пытался уменьшить значение idle_in_transaction_session_timeout до 10 минут (изначально оно было установлено на 1 день), но это не дало никакого эффекта. У кого-нибудь было подобная проблема? Если да, то как вы с ней справились?
Наша версия Discourse 2.7.0, версия Postgres — 13.8. Приложение и база данных не работают в Docker, а размещены отдельно (EC2, RDS).