Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reduce 298 SQL queries which are needed for a profile #1079

Closed
wintermeyer opened this issue Oct 2, 2024 · 5 comments
Closed

Reduce 298 SQL queries which are needed for a profile #1079

wintermeyer opened this issue Oct 2, 2024 · 5 comments
Assignees
Labels
enhancement New feature or request

Comments

@wintermeyer
Copy link
Collaborator

My setup:

  • mix ecto.reset
  • mix seed_demo_system
  • iex -S mix phx.server

I fire up the browser and open a profile page. That moment the iex displays no less than 919 rows of messages. I counted 298 SQL queries which need a total of 143 ms on my MacBook Air. Just the SQL queries use 143 ms!!!

This is going to kill us in the long run. We need to reduce the number of database hits. Why do we need 298 SQL queries to display just one profile?

@briankariuki Since you are already working at this. Can you share some light on the problem? How can we tackle this? What are our options?

CC @MICHAELMUNAVU83 @Kimutai01 Feel free to add thoughts to this ticket too.

Here are the queries for just one profile page:

[debug] QUERY OK source="users" db=5.0ms queue=1.2ms idle=141.2ms
[debug] QUERY OK source="user_roles" db=0.7ms queue=0.5ms idle=158.9ms
[debug] QUERY OK source="roles" db=0.7ms queue=0.6ms idle=143.7ms
[debug] QUERY OK source="roles" db=0.8ms idle=145.3ms
[debug] QUERY OK source="geo_data_cities" db=0.9ms queue=0.8ms idle=152.4ms
[debug] QUERY OK source="photos" db=0.9ms queue=1.2ms idle=162.9ms
[debug] QUERY OK source="users" db=2.8ms idle=185.3ms
[debug] QUERY OK source="user_roles" db=1.2ms idle=188.6ms
[debug] QUERY OK source="roles" db=1.2ms idle=190.1ms
[debug] QUERY OK source="roles" db=1.5ms idle=191.6ms
[debug] QUERY OK source="geo_data_cities" db=0.9ms idle=77.2ms
[debug] QUERY OK source="photos" db=0.8ms idle=51.2ms
[debug] QUERY OK source="credits" db=0.3ms queue=0.9ms idle=50.4ms
[debug] QUERY OK source="messages" db=0.5ms queue=0.6ms idle=92.2ms
[debug] QUERY OK source="users" db=2.1ms queue=1.0ms idle=99.4ms
[debug] QUERY OK source="user_roles" db=0.5ms idle=92.3ms
[debug] QUERY OK source="roles" db=0.5ms idle=70.1ms
[debug] QUERY OK source="roles" db=0.5ms idle=69.3ms
[debug] QUERY OK source="geo_data_cities" db=0.8ms idle=68.9ms
[debug] QUERY OK source="photos" db=0.8ms idle=67.2ms
[debug] QUERY OK source="users" db=1.7ms idle=71.5ms
[debug] QUERY OK source="user_roles" db=0.2ms idle=75.6ms
[debug] QUERY OK source="roles" db=0.1ms idle=74.6ms
[debug] QUERY OK source="roles" db=0.2ms idle=32.4ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=15.9ms
[debug] QUERY OK source="photos" db=0.2ms idle=14.9ms
[debug] QUERY OK source="user_flags" db=2.0ms queue=0.6ms idle=25.9ms
[debug] QUERY OK source="user_flags" db=2.4ms idle=28.0ms
[debug] QUERY OK source="reactions" db=0.5ms queue=0.3ms idle=30.8ms
[debug] QUERY OK source="users" db=1.5ms queue=1.2ms idle=58.5ms
[debug] QUERY OK source="user_roles" db=0.6ms idle=55.2ms
[debug] QUERY OK source="roles" db=0.6ms idle=53.3ms
[debug] QUERY OK source="roles" db=0.2ms idle=53.6ms
[debug] QUERY OK source="geo_data_cities" db=0.8ms idle=54.0ms
[debug] QUERY OK source="photos" db=0.7ms idle=54.0ms
[debug] QUERY OK source="geo_data_cities" db=0.8ms idle=54.1ms
[debug] QUERY OK source="geo_data_cities" db=0.7ms idle=41.0ms
[debug] QUERY OK source="photos" db=0.7ms idle=38.4ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=36.7ms
[debug] QUERY OK source="geo_data_cities" db=0.6ms idle=7.4ms
[debug] QUERY OK source="photos" db=0.7ms idle=6.4ms
[debug] QUERY OK source="geo_data_cities" db=0.8ms idle=6.2ms
[debug] QUERY OK source="photos" db=0.8ms idle=6.2ms
[debug] QUERY OK source="photos" db=0.7ms idle=6.0ms
[debug] QUERY OK source="photos" db=0.3ms idle=6.5ms
[debug] QUERY OK source="optimized_photos" db=0.6ms queue=0.6ms idle=11.9ms
[debug] QUERY OK source="users" db=1.5ms idle=13.5ms
[debug] QUERY OK source="user_roles" db=0.1ms idle=15.4ms
[debug] QUERY OK source="roles" db=0.1ms idle=15.5ms
[debug] QUERY OK source="roles" db=0.1ms idle=14.9ms
[debug] QUERY OK source="geo_data_cities" db=0.3ms idle=15.3ms
[debug] QUERY OK source="photos" db=0.2ms idle=14.9ms
[debug] QUERY OK source="photos" db=0.3ms idle=14.2ms
[debug] QUERY OK source="geo_data_cities" db=1.0ms idle=15.0ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=14.4ms
[debug] QUERY OK source="photos" db=0.3ms idle=8.2ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=5.4ms
[debug] QUERY OK source="geo_data_cities" db=0.7ms idle=5.3ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=5.5ms
[debug] QUERY OK source="photos" db=0.7ms idle=5.5ms
[debug] QUERY OK source="photos" db=0.3ms idle=5.5ms
[debug] QUERY OK source="photos" db=0.2ms idle=6.5ms
[debug] QUERY OK source="optimized_photos" db=0.9ms idle=9.0ms
[debug] QUERY OK source="optimized_photos" db=0.9ms idle=10.1ms
[debug] QUERY OK source="optimized_photos" db=1.0ms idle=10.9ms
[debug] QUERY OK source="optimized_photos" db=0.2ms idle=11.8ms
[debug] QUERY OK source="optimized_photos" db=0.8ms idle=12.4ms
[debug] QUERY OK source="optimized_photos" db=0.9ms idle=12.5ms
[debug] QUERY OK source="optimized_photos" db=0.9ms idle=13.3ms
[debug] QUERY OK source="users" db=2.5ms idle=15.7ms
[debug] QUERY OK source="user_roles" db=0.1ms idle=17.9ms
[debug] QUERY OK source="roles" db=0.1ms idle=17.2ms
[debug] QUERY OK source="roles" db=0.1ms idle=13.3ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=12.7ms
[debug] QUERY OK source="photos" db=0.2ms idle=11.5ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=11.0ms
[debug] QUERY OK source="geo_data_cities" db=0.1ms idle=10.2ms
[debug] QUERY OK source="photos" db=0.2ms idle=9.2ms
[debug] QUERY OK source="geo_data_cities" db=0.1ms idle=7.9ms
[debug] QUERY OK source="geo_data_cities" db=0.1ms idle=4.4ms
[debug] QUERY OK source="photos" db=0.2ms idle=4.0ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=3.6ms
[debug] QUERY OK source="photos" db=0.1ms idle=3.9ms
[debug] QUERY OK source="photos" db=0.2ms idle=3.7ms
[debug] QUERY OK source="photos" db=0.2ms idle=3.9ms
[debug] QUERY OK source="optimized_photos" db=0.2ms idle=4.4ms
[debug] QUERY OK source="users" db=0.5ms idle=5.2ms
[debug] QUERY OK source="user_roles" db=0.1ms idle=5.7ms
[debug] QUERY OK source="roles" db=0.1ms idle=6.2ms
[debug] QUERY OK source="roles" db=0.2ms idle=6.1ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=6.5ms
[debug] QUERY OK source="photos" db=0.2ms idle=6.5ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=6.5ms
[debug] QUERY OK source="photos" db=0.2ms idle=6.2ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=5.7ms
[debug] QUERY OK source="geo_data_cities" db=0.1ms idle=5.6ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=4.0ms
[debug] QUERY OK source="photos" db=0.7ms idle=4.1ms
[debug] QUERY OK source="geo_data_cities" db=0.1ms idle=4.1ms
[debug] QUERY OK source="photos" db=0.2ms idle=4.2ms
[debug] QUERY OK source="photos" db=0.2ms idle=4.2ms
[debug] QUERY OK source="photos" db=0.1ms idle=5.0ms
[debug] QUERY OK source="optimized_photos" db=0.2ms idle=5.1ms
[debug] QUERY OK source="optimized_photos" db=0.2ms idle=5.2ms
[debug] QUERY OK source="optimized_photos" db=0.2ms idle=5.7ms
[debug] QUERY OK source="optimized_photos" db=0.2ms idle=5.8ms
[debug] QUERY OK source="optimized_photos" db=0.1ms idle=5.7ms
[debug] QUERY OK source="optimized_photos" db=0.2ms idle=6.2ms
[debug] QUERY OK source="user_flags" db=0.9ms queue=0.5ms idle=12.3ms
[debug] QUERY OK source="traits_flags" db=0.5ms queue=0.2ms idle=13.6ms
[debug] QUERY OK source="user_flags" db=1.0ms idle=14.0ms
[debug] QUERY OK source="traits_flags" db=0.6ms idle=14.4ms
[debug] QUERY OK source="user_flags" db=0.9ms idle=14.7ms
[debug] QUERY OK source="traits_flags" db=0.6ms idle=15.5ms
[debug] QUERY OK source="stories" db=0.6ms queue=0.3ms idle=17.3ms
[debug] QUERY OK source="photos" db=0.1ms queue=0.1ms idle=17.6ms
[debug] QUERY OK source="headlines" db=0.5ms queue=0.2ms idle=18.1ms
[debug] QUERY OK source="users" db=0.3ms idle=18.3ms
[debug] QUERY OK source="user_roles" db=0.5ms idle=11.1ms
[debug] QUERY OK source="roles" db=0.1ms idle=10.6ms
[debug] QUERY OK source="roles" db=0.5ms idle=9.6ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=9.6ms
[debug] QUERY OK source="photos" db=0.2ms idle=8.4ms
[debug] QUERY OK source="stories" db=0.9ms idle=8.1ms
[debug] QUERY OK source="photos" db=0.1ms idle=5.8ms
[debug] QUERY OK source="headlines" db=0.7ms idle=6.6ms
[debug] QUERY OK source="optimized_photos" db=0.2ms idle=9.0ms
[debug] QUERY OK source="optimized_photos" db=0.4ms idle=23.4ms
[debug] QUERY OK source="optimized_photos" db=0.2ms idle=23.5ms
[debug] QUERY OK source="stories" db=1.0ms idle=24.1ms
[debug] QUERY OK source="photos" db=0.3ms idle=24.1ms
[debug] QUERY OK source="headlines" db=0.6ms idle=24.7ms
[debug] QUERY OK source="posts" db=0.4ms queue=0.2ms idle=24.8ms
[debug] QUERY OK source="users" db=1.7ms idle=94.5ms
[debug] QUERY OK source="user_roles" db=0.3ms idle=96.9ms
[debug] QUERY OK source="roles" db=0.7ms idle=98.5ms
[debug] QUERY OK source="roles" db=0.5ms idle=96.7ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=82.6ms
[debug] QUERY OK source="photos" db=0.2ms idle=82.1ms
[debug] QUERY OK source="users" db=0.7ms idle=81.4ms
[debug] QUERY OK source="user_roles" db=0.2ms idle=81.8ms
[debug] QUERY OK source="roles" db=0.2ms idle=82.2ms
[debug] QUERY OK source="roles" db=0.1ms idle=81.6ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=10.4ms
[debug] QUERY OK source="photos" db=0.2ms idle=9.4ms
[debug] QUERY OK source="credits" db=0.3ms idle=7.5ms
[debug] QUERY OK source="messages" db=0.8ms idle=7.3ms
[debug] QUERY OK source="users" db=2.3ms idle=8.7ms
[debug] QUERY OK source="user_roles" db=0.4ms idle=12.7ms
[debug] QUERY OK source="roles" db=1.4ms idle=12.2ms
[debug] QUERY OK source="roles" db=0.6ms idle=14.6ms
[debug] QUERY OK source="geo_data_cities" db=0.5ms idle=19.1ms
[debug] QUERY OK source="photos" db=0.4ms idle=19.2ms
[debug] QUERY OK source="users" db=2.7ms idle=19.7ms
[debug] QUERY OK source="user_roles" db=0.2ms idle=22.5ms
[debug] QUERY OK source="roles" db=0.2ms idle=22.5ms
[debug] QUERY OK source="roles" db=0.1ms idle=21.7ms
[debug] QUERY OK source="geo_data_cities" db=0.4ms idle=19.0ms
[debug] QUERY OK source="photos" db=0.2ms idle=16.9ms
[debug] QUERY OK source="bookmarks" db=1.8ms queue=0.8ms idle=22.4ms
[debug] QUERY OK source="users" db=1.4ms queue=0.5ms idle=26.0ms
[debug] QUERY OK source="user_roles" db=0.1ms idle=23.6ms
[debug] QUERY OK source="roles" db=0.1ms idle=23.6ms
[debug] QUERY OK source="roles" db=0.1ms idle=20.4ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=20.4ms
[debug] QUERY OK source="photos" db=0.2ms idle=20.4ms
[debug] QUERY OK source="bookmarks" db=1.9ms queue=0.6ms idle=51.5ms
[debug] QUERY OK source="bookmarks" db=1.0ms queue=0.3ms idle=54.9ms
[debug] QUERY OK source="users" db=0.6ms idle=56.7ms
[debug] QUERY OK source="user_roles" db=0.5ms idle=47.9ms
[debug] QUERY OK source="roles" db=0.1ms idle=43.6ms
[debug] QUERY OK source="roles" db=0.1ms idle=43.2ms
[debug] QUERY OK source="geo_data_cities" db=0.1ms idle=43.4ms
[debug] QUERY OK source="photos" db=0.2ms idle=43.1ms
[debug] QUERY OK source="bookmarks" db=1.3ms idle=42.8ms
[debug] QUERY OK source="users" db=0.5ms idle=44.0ms
[debug] QUERY OK source="user_roles" db=0.1ms idle=10.8ms
[debug] QUERY OK source="roles" db=0.1ms idle=7.5ms
[debug] QUERY OK source="roles" db=0.1ms idle=6.5ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=6.2ms
[debug] QUERY OK source="photos" db=0.2ms idle=6.1ms
[debug] QUERY OK source="bookmarks" db=2.6ms idle=7.2ms
[debug] QUERY OK source="users" db=1.7ms idle=9.8ms
[debug] QUERY OK source="user_roles" db=0.5ms idle=11.8ms
[debug] QUERY OK source="roles" db=0.1ms idle=10.9ms
[debug] QUERY OK source="roles" db=0.1ms idle=10.3ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=10.6ms
[debug] QUERY OK source="photos" db=0.2ms idle=10.4ms
[debug] QUERY OK db=0.1ms idle=14.4ms
[debug] QUERY OK source="visit_log_entries" db=1.3ms
[debug] QUERY OK db=0.3ms
[debug] QUERY OK source="user_flags" db=1.7ms idle=21.4ms
[debug] QUERY OK source="user_flags" db=1.7ms idle=23.0ms
[debug] QUERY OK source="reactions" db=0.6ms idle=21.5ms
[debug] QUERY OK source="users" db=1.1ms idle=21.2ms
[debug] QUERY OK source="user_roles" db=0.1ms idle=21.8ms
[debug] QUERY OK source="roles" db=0.1ms idle=21.7ms
[debug] QUERY OK source="roles" db=0.1ms idle=21.8ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=21.6ms
[debug] QUERY OK source="photos" db=0.2ms idle=21.6ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=10.7ms
[debug] QUERY OK source="photos" db=0.2ms idle=8.8ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=7.2ms
[debug] QUERY OK source="photos" db=0.2ms idle=6.3ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=4.0ms
[debug] QUERY OK source="geo_data_cities" db=0.3ms idle=3.8ms
[debug] QUERY OK source="photos" db=0.2ms idle=3.5ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=3.6ms
[debug] QUERY OK source="photos" db=0.2ms idle=3.5ms
[debug] QUERY OK source="photos" db=0.2ms idle=4.3ms
[debug] QUERY OK source="optimized_photos" db=0.3ms idle=4.5ms
[debug] QUERY OK source="users" db=0.5ms idle=6.0ms
[debug] QUERY OK source="user_roles" db=0.1ms idle=6.5ms
[debug] QUERY OK source="roles" db=0.1ms idle=6.8ms
[debug] QUERY OK source="roles" db=0.2ms idle=7.0ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=7.3ms
[debug] QUERY OK source="photos" db=0.3ms idle=7.4ms
[debug] QUERY OK source="geo_data_cities" db=0.3ms idle=7.5ms
[debug] QUERY OK source="photos" db=0.2ms idle=7.3ms
[debug] QUERY OK source="geo_data_cities" db=0.1ms idle=6.5ms
[debug] QUERY OK source="geo_data_cities" db=0.1ms idle=6.1ms
[debug] QUERY OK source="photos" db=0.2ms idle=4.3ms
[debug] QUERY OK source="geo_data_cities" db=0.3ms idle=4.3ms
[debug] QUERY OK source="photos" db=0.2ms idle=4.2ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=3.8ms
[debug] QUERY OK source="photos" db=0.2ms idle=3.6ms
[debug] QUERY OK source="photos" db=0.2ms idle=4.1ms
[debug] QUERY OK source="optimized_photos" db=0.2ms idle=4.2ms
[debug] QUERY OK source="optimized_photos" db=0.1ms idle=4.2ms
[debug] QUERY OK source="optimized_photos" db=0.2ms idle=4.7ms
[debug] QUERY OK source="optimized_photos" db=0.2ms idle=4.9ms
[debug] QUERY OK source="optimized_photos" db=0.7ms idle=5.2ms
[debug] QUERY OK source="optimized_photos" db=1.0ms idle=5.8ms
[debug] QUERY OK source="optimized_photos" db=0.7ms idle=6.8ms
[debug] QUERY OK source="users" db=0.6ms idle=8.7ms
[debug] QUERY OK source="user_roles" db=0.2ms idle=9.1ms
[debug] QUERY OK source="roles" db=0.1ms idle=8.9ms
[debug] QUERY OK source="roles" db=0.1ms idle=8.6ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=8.7ms
[debug] QUERY OK source="photos" db=0.2ms idle=8.2ms
[debug] QUERY OK source="geo_data_cities" db=0.1ms idle=8.3ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=7.7ms
[debug] QUERY OK source="photos" db=0.2ms idle=6.2ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=5.6ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=4.4ms
[debug] QUERY OK source="photos" db=0.3ms idle=3.9ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=4.1ms
[debug] QUERY OK source="photos" db=0.2ms idle=4.2ms
[debug] QUERY OK source="photos" db=0.2ms idle=4.7ms
[debug] QUERY OK source="photos" db=0.2ms idle=5.5ms
[debug] QUERY OK source="optimized_photos" db=0.2ms idle=5.7ms
[debug] QUERY OK source="users" db=0.5ms idle=6.6ms
[debug] QUERY OK source="user_roles" db=0.1ms idle=7.5ms
[debug] QUERY OK source="roles" db=0.1ms idle=7.4ms
[debug] QUERY OK source="roles" db=0.1ms idle=7.2ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=7.7ms
[debug] QUERY OK source="photos" db=0.1ms idle=7.3ms
[debug] QUERY OK source="geo_data_cities" db=0.1ms idle=7.3ms
[debug] QUERY OK source="geo_data_cities" db=0.1ms idle=5.6ms
[debug] QUERY OK source="photos" db=0.2ms idle=6.3ms
[debug] QUERY OK source="geo_data_cities" db=0.1ms idle=5.4ms
[debug] QUERY OK source="photos" db=0.1ms idle=3.8ms
[debug] QUERY OK source="geo_data_cities" db=0.2ms idle=4.3ms
[debug] QUERY OK source="geo_data_cities" db=0.1ms idle=3.9ms
[debug] QUERY OK source="photos" db=0.2ms idle=3.7ms
[debug] QUERY OK source="photos" db=0.1ms idle=3.7ms
[debug] QUERY OK source="photos" db=0.1ms idle=4.2ms
[debug] QUERY OK source="optimized_photos" db=0.2ms idle=4.4ms
[debug] QUERY OK source="optimized_photos" db=0.2ms idle=4.5ms
[debug] QUERY OK source="optimized_photos" db=0.1ms idle=5.1ms
[debug] QUERY OK source="optimized_photos" db=0.2ms idle=5.1ms
[debug] QUERY OK source="optimized_photos" db=0.2ms idle=4.9ms
[debug] QUERY OK source="optimized_photos" db=0.2ms idle=5.4ms
[debug] QUERY OK source="user_flags" db=0.3ms idle=12.0ms
[debug] QUERY OK source="traits_flags" db=0.8ms idle=12.5ms
[debug] QUERY OK source="user_flags" db=1.2ms idle=13.2ms
[debug] QUERY OK source="traits_flags" db=0.4ms idle=14.1ms
[debug] QUERY OK source="user_flags" db=0.9ms idle=14.3ms
[debug] QUERY OK source="traits_flags" db=0.4ms idle=14.9ms
[debug] QUERY OK source="stories" db=1.0ms idle=15.4ms
[debug] QUERY OK source="photos" db=0.4ms idle=15.7ms
[debug] QUERY OK source="headlines" db=0.8ms idle=16.2ms
[debug] QUERY OK source="users" db=0.6ms idle=16.5ms
[debug] QUERY OK source="user_roles" db=0.1ms idle=10.2ms
[debug] QUERY OK source="roles" db=0.1ms idle=9.2ms
[debug] QUERY OK source="roles" db=0.1ms idle=7.9ms
[debug] QUERY OK source="geo_data_cities" db=0.1ms idle=7.7ms
[debug] QUERY OK source="photos" db=0.1ms idle=6.9ms
[debug] QUERY OK source="stories" db=0.7ms idle=6.8ms
[debug] QUERY OK source="headlines" db=0.1ms idle=6.4ms
[debug] QUERY OK source="photos" db=0.2ms idle=5.7ms
[debug] QUERY OK source="optimized_photos" db=0.2ms idle=6.4ms
[debug] QUERY OK source="optimized_photos" db=0.2ms idle=6.2ms
[debug] QUERY OK source="optimized_photos" db=0.2ms idle=6.4ms
[debug] QUERY OK source="stories" db=1.1ms idle=8.5ms
[debug] QUERY OK source="photos" db=0.2ms idle=9.0ms
[debug] QUERY OK source="headlines" db=0.5ms idle=9.7ms
[debug] QUERY OK source="posts" db=0.8ms idle=9.5ms
@wintermeyer wintermeyer added the enhancement New feature or request label Oct 2, 2024
@briankariuki
Copy link
Collaborator

The problem here is with the User resource. Specifically the preparation block. IMO resources shouldn't have a default preparation with a load unless the calculation/aggregate being loaded is necessary and does not read from the database. These load statements should be left to the caller to add what it needs.

 preparations do
    prepare build(
              load: [
                :age,
                :credit_points,
                :profile_photo,
                :city,
                :roles
              ]
            )
  end

In our case both, credit_points, profile_photo, city and roles make additional sql queries to load the data.

@briankariuki
Copy link
Collaborator

I liked the idea of having a BasicUser resource, which is very minimal and does not have any default load statement and the having the User one with any number of load statements and limiting when the user should be loaded from it.

@briankariuki
Copy link
Collaborator

Something else, I think the genserver Animina.GenServers.ProfileViewCredits also starts when the mix task is called.

@MICHAELMUNAVU83
Copy link
Collaborator

I liked the idea of having a BasicUser resource, which is very minimal and does not have any default load statement and the having the User one with any number of load statements and limiting when the user should be loaded from it.

I agree , before we make this refactor , I think we need to have basic tests for at least each live view and resource as so mantypages and actions are dependent on the loaded resources on the user.

@wintermeyer wintermeyer mentioned this issue Oct 2, 2024
5 tasks
@wintermeyer
Copy link
Collaborator Author

I think it will be faster to start on a green field with this problem. See #1080

@briankariuki You are point on this one. Please keep us in the loop with information by adding updates in that issue. I kind of hope that this should be doable quite fast. But in case it takes more than two weeks contact me and we discuss it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants