Fix some N+1 queries in the GET /projects API
EE MR: https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/2363
What does this MR do?
Before improvements:
-
Unauthenticated user: N+1 problem on
:route
and:namespace
- 5 requests for 1 project
- 8 requests for 2 projects
- => approximately 3 additional queries per project
-
Authenticated user: N+1 problem on
:route
,:namespace
,:project_members
, and:group_member
-
No projects belongs to a group
- 53 queries for 4 projects
- 66 queries for 5 projects
- => approximately 12 additional queries per project
-
Some projects belongs to a group
- 67 queries for 5 projects
- 81 queries for 6 projects
- => approximately 12 additional queries per project
-
After improvements:
- Unauthenticated user: N+1 problem on
:route
and:namespace
- always 5 requests
- => no additional query per project
- Authenticated user: N+1 problem on
:route
,:namespace
,:taggings
,:project_members
, and:group_member
- No projects belongs to a group
- 46 queries for 4 projects
- 55 queries for 5 projects
- => 7 less "bootstrap" queries, 3 less additional queries per project (still 8 additional queries per project)
- Some projects belongs to a group
- 55 queries for 5 projects
- 64 queries for 6 projects
- => 12 less "bootstrap" queries, 3 less additional queries per project (still 8 additional queries per project)
- No projects belongs to a group
Are there points in the code the reviewer needs to double check?
- There are still N+1 queries but I couldn't improve them in a reasonable time.
- I don't think we need a changelog entry for such backstage change?
Does this MR meet the acceptance criteria?
-
Changelog entry added, if necessary -
API support added - Tests
-
Added for this feature/bug -
All builds are passing
-
-
Conform by the merge request performance guides -
Conform by the style guides -
Branch has no merge conflicts with master
(if it does - rebase it please) -
Squashed related commits together
What are the relevant issue numbers?
Closes #33748 (closed)
Edited by username-removed-128633