У меня есть пара сложных запросов, которые при индивидуальном запуске возвращаются примерно через 10 мс.
Они обычно принимают форму областей ActiveRecord.
Однако они приносят нашу продукциюСистема на колени.Эти конкретные области видимости в нашем приложении разбиты на страницы.
Запрашивающие запросы всегда counts
.ActiveRecord должен автоматически выполнять подсчет, когда данные должны быть разбиты на страницы.
Postgres действительно ужасен при подсчете.В дополнение к этому, он одержим получением точных подсчетов.В результате подсчеты создают ExclusiveLock
для базовых таблиц.
Эти блокировки приводят к резервному копированию всего в базе данных, что приводит к отключению всего приложения.
Есть личто-нибудь, что можно сделать, чтобы Postgres не блокировал каждую отдельную таблицу и индекс, связанный с этими запросами, простым подсчетом?