neu*_*mic 0 ruby-on-rails elixir ecto phoenix-framework
我发现bullet gem是一个非常有用的工具,用于在Rails应用程序中捕获慢速数据库查询.是否有类似的工具Ecto/ Phoenix有助于通知您N + 1和其他慢查询?
N+1查询不会发生Ecto.
必须使用preload在查询中显式加载Ecto关联
如果您尝试访问尚未加载的关联,它将是Ecto.Association.NotLoaded的实例
对于其他慢速查询,您可以向ecto添加自定义记录器:
config :my_app, MyApp.Repo,
adapter: Ecto.Adapters.Postgres,
url: {:system, "DATABASE_URL"},
loggers: [{Ecto.LogEntry, :log, []}, {MyApp.CustomLogger, :log, []}]
Run Code Online (Sandbox Code Playgroud)
自定义记录器:
defmodule MyApp.CustomLogger do
def log(entry) do
if (entry.query_time > 1000_000) do
Logger.info("Slow!!!!: #{entry.query}")
end
end
end
Run Code Online (Sandbox Code Playgroud)