2010-09-18 21 views

Odpowiedz

2

Wystarczy popatrzeć na metodzie clear_query_cache w http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/QueryCache.html

+0

Widziałem tę metodę. Jednak wywołanie go na MyModel.connection nie wydaje się mieć żadnego wpływu. Robię masowe wstawki i muszę wyczyścić pamięć podręczną zapytań, aby ActiveRecord mógł zobaczyć nowe rekordy, ale jak dotąd nie udało mi się. – clacke

+1

Wygląda na to, że w Railsach 2 można było dotrzeć do pamięci podręcznej zapytań za pomocą 'ActiveRecord :: Base.query_cache.clear_query_cache', ale teraz to miejsce zniknęło. Jak już powiedziałem, robienie tego na połączeniu modelu nie działa. W końcu rozwiązałem to, przechodząc całkowicie za plecami AR również w przypadku zapytań po tej masowej wstawce. – clacke

+0

@clacke możesz opublikować ostateczne rozwiązanie, które znalazłeś ("całkowicie za AR's back")? Czy pośrednio mówisz, że używasz SQL zamiast AR? – jvatic

23

do pierwszego zbliżenia:

ActiveRecord::Base.connection.query_cache.clear 
0

Często gdy widzisz buforowanie zapytań do bazy danych, Twój db robi buforowania, nie ActiveRecord, co oznacza, musisz wyczyścić pamięć podręczną i bufory na poziomie db, a nie na poziomie ActiveRecord.

Na przykład, aby wyczyścić pamięć podręczną i bufory PostgreSy na Macu, zrobiłbyś sudo purge, co zmusza pamięć podręczną dysku do opróżnienia i opróżnienia.

Aby wyczyścić pamięć podręczną i buforów postgres' w systemie Linux, należy zamknąć postgres, spadek bufory i podtrzymują znowu zacząć postgres:

service postgresql stop 
sync 
echo 3 > /proc/sys/vm/drop_caches 
service postgresql start 

Dalsze czytanie:

Powiązane problemy