Skip to content
Snippets Groups Projects
Select Git revision
  • move-gl-dropdown
  • improve-table-pagination-spec
  • move-markdown-preview
  • winh-fix-merge-request-spec
  • master default
  • index-namespaces-lower-name
  • winh-single-karma-test
  • 10-3-stable
  • 36782-replace-team-user-role-with-add_role-user-in-specs
  • winh-modal-internal-state
  • tz-ide-file-icons
  • 38869-milestone-select
  • update-autodevops-template
  • jivl-activate-repo-cookie-preferences
  • qa-add-deploy-key
  • docs-move-article-ldap
  • 40780-choose-file
  • 22643-manual-job-page
  • refactor-cluster-show-page-conservative
  • dm-sidekiq-versioning
  • v10.4.0.pre
  • v10.3.0
  • v10.3.0-rc5
  • v10.3.0-rc4
  • v10.3.0-rc3
  • v10.3.0-rc2
  • v10.2.5
  • v10.3.0-rc1
  • v10.0.7
  • v10.1.5
  • v10.2.4
  • v10.2.3
  • v10.2.2
  • v10.2.1
  • v10.3.0.pre
  • v10.2.0
  • v10.2.0-rc4
  • v10.2.0-rc3
  • v10.1.4
  • v10.2.0-rc2
40 results

migration_helpers.rb

Blame
Forked from GitLab.org / GitLab FOSS
Source project has a limited visibility.
  • Yorick Peterse's avatar
    a97dcc07
    Add method for creating foreign keys concurrently · a97dcc07
    Yorick Peterse authored
    This method allows one to create foreign keys without blocking access to
    the source table, but only on PostgreSQL.
    
    When creating a regular foreign key the "ALTER TABLE" statement used for
    this won't return until all data has been validated. This statement in
    turn will acquire a lock on the source table. As a result this lock can
    be held for quite a long amount of time, depending on the number of rows
    and system load.
    
    By breaking up the foreign key creation process in two steps (creation,
    and validation) we can reduce the amount of locking to a minimum.
    Locking is still necessary for the "ALTER TABLE" statement that adds the
    constraint, but this is a fast process and so will only block access for
    a few milliseconds.
    Add method for creating foreign keys concurrently
    Yorick Peterse authored
    This method allows one to create foreign keys without blocking access to
    the source table, but only on PostgreSQL.
    
    When creating a regular foreign key the "ALTER TABLE" statement used for
    this won't return until all data has been validated. This statement in
    turn will acquire a lock on the source table. As a result this lock can
    be held for quite a long amount of time, depending on the number of rows
    and system load.
    
    By breaking up the foreign key creation process in two steps (creation,
    and validation) we can reduce the amount of locking to a minimum.
    Locking is still necessary for the "ALTER TABLE" statement that adds the
    constraint, but this is a fast process and so will only block access for
    a few milliseconds.