В нашей производственной среде мы заметили частые всплески (~ каждые 1 час) в нашем Rails-приложении. Копая глубже, это связано с следующим запросом, который кумулятивно работает в > 1,5 с (называется 100х) в одном 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" связан.
Но не следует ли это называть Runtime неповторимым?
Как мы ускоряем это?