Remove index in deployments table asynchronously
What does this MR do and why?
Index: index_deployments_on_environment_id_and_iid_and_project_id
This is part of an epic to optimize the deployments table by removing unused indexes: &10185
The sync index removal will be done in a follow-up MR.
Index definition:
"index_deployments_on_environment_id_and_iid_and_project_id" btree (environment_id, iid, project_id)
This index has a usage of 11.660303887309766
from the last 30 days. However, there is nothing in the GitLab codebase that is actually using this exact combination of indexes (see thread: #402509 (comment 1379476671))
There is a query that uses a combination of project_id
and iid
, see: https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/models/deployment.rb#L39 used by https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/graphql/resolvers/deployment_resolver.rb#L17, but there is an index that's only for these 2 fields:
"index_deployments_on_project_id_and_iid" UNIQUE, btree (project_id, iid)
Screenshots or screen recordings
Migration output
main: == [advisory_lock_connection] object_id: 223460, pg_backend_pid: 93744
main: == 20230704050739 PrepareRemovalIndexDeploymentsOnEnvironmentIdAndIidAndProjectId: migrating
main: -- index_exists?(:deployments, [:environment_id, :iid, :project_id], {:name=>"index_deployments_on_environment_id_and_iid_and_project_id"})
main: -> 0.1042s
main: -- quote_column_name("index_deployments_on_environment_id_and_iid_and_project_id")
main: -> 0.0000s
main: == 20230704050739 PrepareRemovalIndexDeploymentsOnEnvironmentIdAndIidAndProjectId: migrated (0.1252s)
How to set up and validate locally
N/A
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.
Related to #402509 (closed)