3

Ich habe den Verdacht, dass meine App einen Speicherverlust hat, habe ich gelesen, dass Rails Cache der letzten 1000 Abfrageausführung automatisch verwaltet. Fast jede Abfrage in meiner App ist eindeutig und ziemlich schwer und enthält viele zurückgegebene Zeilen.Ändern ActiveRecord Statement Cache Standard Rails

Also Gibt es eine Möglichkeit, den Standardwert der Anweisung Caching ändern?

Antwort

2

Es wird auf Datenbank-Adapter-Ebene behandelt. Es gibt eine Option, um es durch statement_limit in Postgrsql Adapter zu konfigurieren.

müssen Sie es

production: 
adapter: postgresql 
statement_limit: 200 

Folgen für die amtliche Dokumentation this Link in database.yml hinzuzufügen. Es gibt eine Option, den Anweisungscache vollständig zu deaktivieren.

production: 
adapter: postgresql 
prepared_statements: false 

Zweitens gibt es eine Option, um die statement cache in Postgres Adapter zu löschen. Es gibt eine Methode mit dem Namen clear_cache!. Sie finden sie unter Postgres adaptor

Here ist eine sehr gute Diskussion über die gleiche Sache. Sie finden alle Details in folgenden Links

-1

Rails hat eine Reihe von integrierten Caching-Strategien (ich Postgres-DB), aber keiner von ihnen auf einer Anzahl der Abfragen basieren per se. Wenn der Cache begrenzt ist, basiert er auf der Dateigröße und Ablaufzeit.

Wenn Ihre Anwendung einen Speicher verwendet, ist die Standardgröße für die Dateigröße 32Mb. Dies kann durch Hinzufügen der folgende Zeile in der Konfiguration geändert werden:

config.cache_store = :memory_store, { size: 64.megabytes } 

Die offizielle Dokumentation zu diesem Thema, zusammen mit den vielen anderen Formen des Caching, kann here finden.

Angesichts Ihrer offensichtlichen Notwendigkeit für solche intensive Zwischenspeicherung, würde ich empfehlen, Sie auch in verschiedene andere Optionen - wie fragment cacheing und Russian doll caching - als dies möglicherweise eine weit weniger ressourcenintensive Strategie als SQL-Caching allein.