Skip to content

Migration Squashing

Migration squashing

Version history

Migration squashing combines multiple database migrations into a single schema definition to improve database setup performance and maintain a manageable migration history.

When to use migration squashing

Use migration squashing at the following times:

  • At the start of each major release cycle
  • After a required stop
  • When the number of migrations has grown significantly (typically more than 200 migrations)

Squash migrations

To squash migrations from a previous version (such as 16.10), run:

bundle exec rake "gitlab:db:squash[origin/16-10-stable-ee]"

This Rake task:

  1. Removes all migrations from the previous version
  2. Updates the schema version references in relevant files
  3. Cleans up finalized batched background migrations
  4. Updates CI configuration for database rollbacks

Parameters

Parameter Description
[origin/16-10-stable-ee] The Git reference to use as a baseline for migration squashing. This should be the stable branch of the previous version.

Troubleshooting

Missing schema references

If you encounter errors related to missing schema references, check:

  • Migration spec files that might reference old migrations
  • Background migration files that might need manual updates
  • Documentation that references specific migration versions

Related documentation