J'ai trouvé le bullet gem être un outil incroyablement utile pour intercepter les requêtes de base de données lentes dans les applications Rails. Existe-t-il un outil similaire pour Ecto
/Phoenix
qui vous informe de N + 1 et d'autres requêtes lentes?Existe-t-il un équivalent de la gemme balle dans Rails pour Ecto/Phoenix?
0
A
Répondre
6
N+1
Les requêtes ne se produisent pas dans Ecto
.
associations Ecto doivent être explicitement chargés dans la requête en utilisant preload
Si vous essayez d'accéder à une association qui n'a pas encore été chargé, ce sera une instance de Ecto.Association.NotLoaded
Comme pour les autres requêtes lentes, vous pouvez ajouter un enregistreur personnalisé à ecto:
config :my_app, MyApp.Repo,
adapter: Ecto.Adapters.Postgres,
url: {:system, "DATABASE_URL"},
loggers: [{Ecto.LogEntry, :log, []}, {MyApp.CustomLogger, :log, []}]
enregistreur personnalisé:
defmodule MyApp.CustomLogger do
def log(entry) do
if (entry.query_time > 1000_000) do
Logger.info("Slow!!!!: #{entry.query}")
end
end
end
0
je peux vous recommander mon bijou ecto_profiler
Bien que ce lien peut répondre à la question, il est préférable d'inclure les éléments essentiels de la réponse ici et de fournir le lien de référence. Les réponses à lien uniquement peuvent devenir invalides si la page liée change. - [À revoir] (/ review/low-quality-posts/18634357) –
@JessBowers Comment puis-je inclure les parties essentielles de la gemme grande et épaisse? neurodynamique demande un analogue de balle !! Ne fait pas partie du code! C'est de mauvaise qualité et irresponsable Review –
Ouais je vois ce que tu veux dire. Mais si vous pensez que c'est une mauvaise question pour SO (une «question shopping» qui ne correspond pas vraiment aux règles de SO pour les bonnes questions), dans ce cas, ne répondez pas, votez la question vers le bas. Ou essayez d'éditer le Q pour le rendre meilleur. J'essaie seulement de vous aider à utiliser le site, je n'essaie pas d'offenser - et je ne suis qu'un électeur. –