Skip to content

Fix N+1 in namespace#any_project_has_container_registry_tags?

Tetiana Chupryna requested to merge 21042-update-username-100 into master

What does this MR do?

Fix for #21042 (closed)

We preload container_repositories so we don't need to query registries for each project.

Profiling test

_for a case with namespace with 10 projects

before:

11 SQL queries

after:

2 SQL queries

Database

SQL

Calculated for this namespace

Before

SELECT "projects".* FROM "projects" WHERE "projects"."namespace_id" = 10833146
  SELECT "container_repositories".* FROM "container_repositories" WHERE "container_repositories"."project_id" = 25945163
  SELECT "container_repositories".* FROM "container_repositories" WHERE "container_repositories"."project_id" = 25828387
  SELECT "container_repositories".* FROM "container_repositories" WHERE "container_repositories"."project_id" = 24877249
  SELECT "container_repositories".* FROM "container_repositories" WHERE "container_repositories"."project_id" = 24130347
  SELECT "container_repositories".* FROM "container_repositories" WHERE "container_repositories"."project_id" = 24314610
  SELECT "container_repositories".* FROM "container_repositories" WHERE "container_repositories"."project_id" = 24068262

https://explain.depesz.com/s/JFkB

https://explain.depesz.com/s/5rlg

After

SELECT "projects".* FROM "projects" WHERE "projects"."namespace_id" = 10833146 

SELECT "container_repositories".* FROM "container_repositories" WHERE "container_repositories"."project_id" IN (25945163, 25828387, 24877249, 24130347, 24314610, 24068262) 

https://explain.depesz.com/s/JFkB

https://explain.depesz.com/s/rTuT3

Screenshots (strongly suggested)

not aplicable

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team

Related to #21042 (closed)

Edited by Tetiana Chupryna

Merge request reports