Je crée une application de ligne de commande à l'aide d'ActiveRecord 3.0 (sans rails). Comment effacer le cache de requête qu'ActiveRecord conserve?Effacement du cache ActiveRecord
18
A
Répondre
2
Jetez un oeil à la méthode clear_query_cache
dans http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/QueryCache.html
23
Pour une première approximation:
ActiveRecord::Base.connection.query_cache.clear
0
Très souvent quand vous voyez la mise en cache des requêtes de base de données, votre base de données est en train de faire la mise en cache, et non ActiveRecord, ce qui signifie vous devez effacer le cache et les tampons au niveau db, pas le niveau ActiveRecord. Par exemple, pour effacer le cache et les tampons Postgres sur Mac, vous devez exécuter sudo purge
, ce qui force le vidage et le vidage du cache disque.
Pour effacer le cache de Postgres et des tampons sous Linux, vous arrêtez postgres, déposez les caches, et commencer à postgres remonter à nouveau:
service postgresql stop
sync
echo 3 > /proc/sys/vm/drop_caches
service postgresql start
Pour en savoir plus:
Questions connexes
- 1. Effacement du cache MVC Asp.net pour i.e
- 2. Effacement du cache Symfony pour une autre application
- 3. Contrôle C# WebBrowser: effacement du cache sans effacer les cookies
- 4. Chargement des RSL modifiés sans effacement du cache
- 5. Effacement automatique du cache de démarrage Web Java
- 6. Effacement du cache dans le serveur de production Coldfusion
- 7. cache money ActiveRecord :: MissingAttributeError
- 8. Effacement de RSL dans le cache
- 9. C# effacement du thread principal
- 10. Effacement du magasin de données?
- 11. ActiveRecord Motif et mise en cache?
- 12. Effacement du cache NHibernate entre les exécutions de profilage avec NHProf
- 13. vb.net: effacement du contenu de System.Collections.ArrayList?
- 14. Effacement d'un contenu de NSWindow
- 15. Comment utiliser ActiveRecord Query Cache avec SQL personnalisé
- 16. Compréhension du cache d'hibernation de 2ème niveau
- 17. Modèles ActiveRecord mis en cache dans des tâches rake?
- 18. Effacement d'un Char []
- 19. Effacement des données Mapkit
- 20. Effacement des paramètres OleDbDataReader
- 21. Effacement pour chaque ligne
- 22. ActiveRecord Association cache valeur Date dans des conditions clause
- 23. Recalculer contre Cache de 120k Records [Rails/ActiveRecord]
- 24. Effacement d'une valeur javascript
- 25. Effacement de JTable entier
- 26. effacement des graphiques sprite?
- 27. LinqtoSQL - effacement puis insertion
- 28. effacement caractère de résultat mysql
- 29. Java génériques (effacement de type)
- 30. Effacement d'un élément du vecteur lors de l'itération C++
J'ai vu la méthode. Cependant, l'appeler sur MyModel.connection ne semble pas avoir d'effet. Je fais des insertions de masse et j'ai besoin d'effacer le cache de requête pour qu'ActiveRecord puisse voir les nouveaux enregistrements, mais jusqu'ici je n'ai pas réussi. – clacke
Il semble que dans Rails 2, vous puissiez atteindre le cache de requêtes via 'ActiveRecord :: Base.query_cache.clear_query_cache', mais maintenant cet endroit est parti. Comme je l'ai dit, le faire sur la connexion du modèle ne fonctionne pas. Finalement, je l'ai résolu en allant complètement derrière le dos d'AR également pour les requêtes suivant cet insert de masse. – clacke
@clacke pouvez-vous poster la solution finale que vous avez trouvée ("complètement derrière AR")? Ou dites-vous indirectement que vous utilisez SQL au lieu de AR? – jvatic