PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So beheben Sie eine langsame implizite Abfrage in der pg_attribute-Tabelle in Rails

In der Produktion führt jeder Rails-Prozess diese Abfrage einmal aus für jede Tabelle/Modell, auf die es trifft. Das ist einmal pro rails s , nicht auf Anfrage:Wenn Sie es wiederholt sehen, würde ich untersuchen, ob Ihre Prozesse aus irgendeinem Grund häufig neu gestartet werden.

Um diese Laufzeitabfragen vollständig zu eliminieren, können Sie eine Schema-Cache-Datei generieren auf Ihrem Server:

RAILS_ENV=production rails db:schema:cache:dump

(Rails 4:RAILS_ENV=production bin/rake db:schema:cache:dump )

Dieser Befehl führt die Abfragen sofort aus und schreibt dann ihre Ergebnisse in eine Cache-Datei, die zukünftige Rails-Prozesse direkt laden, anstatt die Datenbank zu inspizieren. Natürlich müssen Sie den Cache dann nach zukünftigen Änderungen des Datenbankschemas neu generieren.