在我们的生产环境中,我们注意到Rails应用程序中经常出现峰值(〜每1小时一次).深入挖掘,这是由于以下查询在单个HTTP请求中累计运行> 1.5 s(称为100x).
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
Run Code Online (Sandbox Code Playgroud)
我们没有显式调用该表的代码,但似乎Rails调用它来计算每个模型的属性." 对Rails/Heroku上的Postgres数据库的意外SQL查询 "是相关的.
但不应该被Rails称为非重复性的吗?
我们如何加快速度?