Convert ci_builds-runner_id FK to LFK
What does this MR do and why?
Related to #356153
This MR deletes the foreign key of ci_builds
#runner_id
-ci_runners
and adds a loose foreign key definition for it.
The migration and the code changes are generated based on the scripts/decomposition/generate-loose-foreign-key
script: https://docs.gitlab.com/ee/development/database/loose_foreign_keys#the-scriptsdecompositiongenerate-loose-foreign-key
Background
Because of the foreign key constraint between
Ci::Build
andCi::Runner
, every time a runner is deleted the builds that were executed by this runner would need to be updated to have therunner_id
value nullified.When busy runners are deleted it causes massive spikes in number of updates to the
ci_builds
table:
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.