Как исправить медленный неявный запрос к таблице pg_attribute в Rails
В нашей производственной среде мы заметили частые всплески (~ 1 час) в нашем приложении Rails. Если копнуть глубже, то это связано со следующим запросом, который в совокупности выполняется за> 1,5 с (называемый 100x) в одном HTTP-запросе.
SELECT a.attname, format_type(a.atttypid, a.atttypmod), pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod FROM pg_attribute a
LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = ?::regclass AND a.attnum > ? AND NOT a.attisdropped
ORDER BY a.attnum
У нас нет кода, вызывающего эту таблицу явно, но кажется, что он вызывается Rails, чтобы выяснить атрибуты для каждой модели. "Неожиданные SQL-запросы к базе данных Postgres на Rails / Heroku" относится.
Но разве он не должен вызываться без повторов в Rails?
Как мы ускорим это?