Время выполнения SQL-запросов зависит от наличия индексов, актуальной статистики и т.п. Большинство проблем с производительностью СУБД решаются оптимизацией самых медленных запросов. Но, увы, бывают ситуации, когда классическая оптимизация запросов не приносит желаемого успеха, система продолжает себя вести неадекватно.
Мы хотим рассказать про свой опыт в решении проблем и попробуем ответить на вопросы:
* почему index scan / index only scan могут тормозить при адекватном плане запроса?
* что за странные ожидания LWLock'а SubtransControlLock или ClientRead видны в pg_stat_activity?
* высокая system-time-утилизация CPU в системе процессами PostgreSQL. Кто виноват?