Compensation ActiveRecord cache
Je suis en train de construire une application en ligne de commande à l'aide de ActiveRecord 3.0 (sans rails). Comment faire pour effacer le cache de requête que ActiveRecord maintient?
Vous devez vous connecter pour publier un commentaire.
À une première approximation:
Ont un coup d'oeil à la méthode
clear_query_cache
dans http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/QueryCache.htmlActiveRecord::Base.query_cache.clear_query_cache
, mais maintenant que la place est allé. Comme je l'ai dit, de le faire sur la connexion du modèle ne fonctionne pas. Enfin je l'ai résolu en allant complètement derrière AR est de retour également pour les requêtes suivantes, que la masse de l'insertion.#reset_column_information
, peut-être, qui efface les dossiers cache ainsi. Vais regarder la prochaine fois.Nous utilisons:
Mais je ne suis pas certain encore, c'est suffisant.
Souvent quand vous voyez la mise en cache de requêtes de base de données, votre db est en train de faire la mise en cache, pas ActiveRecord, ce qui signifie que vous devez effacer le cache et les tampons au niveau de db, pas la ActiveRecord niveau.
Par exemple, pour effacer Postgres' cache et tampons sur Mac, vous ne
sudo purge
, ce qui oblige le cache disque pour être rincé et vidé.Pour effacer Postgres' cache et tampons sur Linux, vous arrêtez postgres, déposer les caches, et de commencer à postgres à nouveau de retour:
Pour en savoir plus:
ls
de nouveau dans ce répertoire, ou de votre instance de Redis ou autres joyeusetés. Le Linux fichier de cache fonctionne en général, et non seulement cela, mais qu'simpliste requêtes typiques Rails apps effectuer sont mis en cache par le PG? Et même alors, sommes-nous supposer que ce PG instance n'a pas d'autres consommateurs dans le besoin de perf? Rails de caches singles extrait, et dans une certaine mesure, les associations. C'est l'essentiel.