Skip to content

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)

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?

What are the relevant issue numbers?

Closes #33748 (closed)

Edited by username-removed-128633

Merge request reports