Nieoczekiwane zapytania SQL do bazy danych Postgres w Rails / Heroku

Nurkowałem w naprawdę długim żądaniu do jednej z moich aplikacji Rails, używając NewRelic i znalazłem wiele zapytań SQL, które wydają się całkowicie obce, zajmujące znaczną ilość czasu. Mam już Google, ale wyszedłem z pustymi rękami co do tego, czym są, nie mówiąc już o tym, czy mogę im zapobiec.

SELECT COUNT(*) FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind in (?, ?) AND c.relname = ? AND n.nspname = ANY (current_schemas(false))

…i…

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

… Każdy wystąpił 7 razy, łącznie 145ms i 135ms (odpowiednio).

SELECT DISTINCT(attr.attname) FROM pg_attribute attr INNER JOIN pg_depend dep ON attr.attrelid = dep.refobjid AND attr.attnum = dep.refobjsubid INNER JOIN pg_constraint cons ON attr.attrelid = cons.conrelid AND attr.attnum = cons.conkey[?] WHERE cons.contype = ? AND dep.refobjid = ?::regclass

… Zostało wykonane 2 razy za cenę 104 ms i…

SHOW search_path

… Wydał 45ms w jednym połączeniu.

Moje przeczucia mówią, że są one związane z adapterem Postgres Rails, ale nie rozumiem, co je uruchamia lub co robi, ani (co ważniejsze), dlaczego strzelały podczas typowego żądania.

Właśnie sprawdziłem logi dokładniej i wygląda to jak hamownia, na którą to żądanie zostało uruchomione kilka sekund wcześniej, więc prawdopodobnie to pierwsze żądanie.

questionAnswers(4)

yourAnswerToTheQuestion