diff options
author | Yorick Peterse <yorickpeterse@gmail.com> | 2016-08-10 12:29:06 +0200 |
---|---|---|
committer | Yorick Peterse <yorickpeterse@gmail.com> | 2016-08-10 13:06:15 +0200 |
commit | 17dd3e89d5a43761e85d7af30ad083db6ca5834b (patch) | |
tree | 2bb7421dfa5121caf0e68fedd6a0f3f9144d9409 /db/migrate/20160810102349_remove_ci_runner_trigram_indexes.rb | |
parent | 023d4812586faa24cce69715c606b4bf236956e9 (diff) | |
download | gitlab-ce-17dd3e89d5a43761e85d7af30ad083db6ca5834b.tar.gz |
Remove trigram indexes for "ci_runners"remove-ci-runner-trigram-indexes
These indexes are only used when you search for runners in the admin
interface. This operation is so rarely used that it does not make sense
to slow down every update in order to update the GIN trigram indexes.
Removing these indexes should speed up queries such as those used for
updating the last contact time of CI runners. Locally the timings of
this query were reduced from ~50 ms to ~25 ms:
UPDATE ci_runners SET updated_at = now(), contacted_at = now();
Diffstat (limited to 'db/migrate/20160810102349_remove_ci_runner_trigram_indexes.rb')
-rw-r--r-- | db/migrate/20160810102349_remove_ci_runner_trigram_indexes.rb | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/db/migrate/20160810102349_remove_ci_runner_trigram_indexes.rb b/db/migrate/20160810102349_remove_ci_runner_trigram_indexes.rb new file mode 100644 index 00000000000..0cfb637804b --- /dev/null +++ b/db/migrate/20160810102349_remove_ci_runner_trigram_indexes.rb @@ -0,0 +1,27 @@ +# See http://doc.gitlab.com/ce/development/migration_style_guide.html +# for more information on how to write migrations for GitLab. + +class RemoveCiRunnerTrigramIndexes < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + # Disabled for the "down" method so the indexes can be re-created concurrently. + disable_ddl_transaction! + + def up + return unless Gitlab::Database.postgresql? + + transaction do + execute 'DROP INDEX IF EXISTS index_ci_runners_on_token_trigram;' + execute 'DROP INDEX IF EXISTS index_ci_runners_on_description_trigram;' + end + end + + def down + return unless Gitlab::Database.postgresql? + + execute 'CREATE INDEX CONCURRENTLY index_ci_runners_on_token_trigram ON ci_runners USING gin(token gin_trgm_ops);' + execute 'CREATE INDEX CONCURRENTLY index_ci_runners_on_description_trigram ON ci_runners USING gin(description gin_trgm_ops);' + end +end |