2010-09-18 12 views
18

Sto costruendo un'applicazione a riga di comando utilizzando ActiveRecord 3.0 (senza guide). Come si cancella la cache delle query mantenuta da ActiveRecord?Svuotamento cache ActiveRecord

risposta

2
+0

Ho visto il metodo. Tuttavia, chiamarlo su MyModel.connection non sembra avere alcun effetto. Sto facendo inserimenti di massa e ho bisogno di cancellare la cache della query in modo che ActiveRecord possa vedere i nuovi record, ma finora non ho avuto successo. – clacke

+1

Sembra che in Rails 2 sia possibile raggiungere la cache della query tramite 'ActiveRecord :: Base.query_cache.clear_query_cache', ma ora quel luogo è sparito. Come ho detto, farlo sulla connessione del modello non funziona. Alla fine l'ho risolto andando completamente dietro la schiena di AR anche per le domande successive all'inserto di massa. – clacke

+0

@clacke puoi pubblicare la soluzione finale che hai trovato ("completamente dietro la parte posteriore di AR")? O stai dicendo indirettamente che usi SQL invece di AR? – jvatic

23

In prima approssimazione:

ActiveRecord::Base.connection.query_cache.clear 
0

Spesso quando si vede la cache di query di database, il vostro db sta facendo il caching, non ActiveRecord, il che significa è necessario svuotare la cache e i buffer a livello di database, non a livello di ActiveRecord.

Ad esempio, per cancellare cache e buffer di Postgres su Mac, si dovrebbe fare sudo purge, che costringe la cache del disco a essere svuotata e svuotata.

svuotare la cache e buffer Postgres' su Linux, si dovrebbe spegnere Postgres, cadere le cache, e iniziare a Postgres tornare di nuovo:

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

Ulteriori approfondimenti:

Problemi correlati