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::BuildandCi::Runner, every time a runner is deleted the builds that were executed by this runner would need to be updated to have therunner_idvalue nullified.When busy runners are deleted it causes massive spikes in number of updates to the
ci_buildstable:
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.