From e447ea63a49b1f28975fc9678fe92a679a34455b Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Sat, 21 Jan 2017 13:44:25 +0100 Subject: Add index for ci_builds that makes shared runners query to run 50x faster. --- ..._index_to_ci_builds_for_status_runner_id_and_type.rb | 17 +++++++++++++++++ db/schema.rb | 3 ++- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20170121123724_add_index_to_ci_builds_for_status_runner_id_and_type.rb diff --git a/db/migrate/20170121123724_add_index_to_ci_builds_for_status_runner_id_and_type.rb b/db/migrate/20170121123724_add_index_to_ci_builds_for_status_runner_id_and_type.rb new file mode 100644 index 00000000000..4ea953f2b78 --- /dev/null +++ b/db/migrate/20170121123724_add_index_to_ci_builds_for_status_runner_id_and_type.rb @@ -0,0 +1,17 @@ +class AddIndexToCiBuildsForStatusRunnerIdAndType < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + add_concurrent_index :ci_builds, [:status, :type, :runner_id] + end + + def down + if index_exists?(:ci_builds, [:status, :type, :runner_id]) + remove_index :ci_builds, column: [:status, :type, :runner_id] + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 7815392c1c3..3d47c737322 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20170106172224) do +ActiveRecord::Schema.define(version: 20170121123724) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -224,6 +224,7 @@ ActiveRecord::Schema.define(version: 20170106172224) do add_index "ci_builds", ["gl_project_id"], name: "index_ci_builds_on_gl_project_id", using: :btree add_index "ci_builds", ["project_id"], name: "index_ci_builds_on_project_id", using: :btree add_index "ci_builds", ["runner_id"], name: "index_ci_builds_on_runner_id", using: :btree + add_index "ci_builds", ["status", "type", "runner_id"], name: "index_ci_builds_on_status_and_type_and_runner_id", using: :btree add_index "ci_builds", ["status"], name: "index_ci_builds_on_status", using: :btree add_index "ci_builds", ["token"], name: "index_ci_builds_on_token", unique: true, using: :btree -- cgit v1.2.1 From 86881f4f7901b7cc31c730c7fff378a6a073eff8 Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Sat, 21 Jan 2017 14:08:27 +0100 Subject: Add index for ci_runners if they are shared --- ...70121130655_add_index_to_ci_runners_for_is_shared.rb | 17 +++++++++++++++++ db/schema.rb | 3 ++- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20170121130655_add_index_to_ci_runners_for_is_shared.rb diff --git a/db/migrate/20170121130655_add_index_to_ci_runners_for_is_shared.rb b/db/migrate/20170121130655_add_index_to_ci_runners_for_is_shared.rb new file mode 100644 index 00000000000..620befcf4d7 --- /dev/null +++ b/db/migrate/20170121130655_add_index_to_ci_runners_for_is_shared.rb @@ -0,0 +1,17 @@ +class AddIndexToCiRunnersForIsShared < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + add_concurrent_index :ci_runners, :is_shared + end + + def down + if index_exists?(:ci_runners, :is_shared) + remove_index :ci_runners, :is_shared + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 3d47c737322..3c836db27fc 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20170121123724) do +ActiveRecord::Schema.define(version: 20170121130655) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -328,6 +328,7 @@ ActiveRecord::Schema.define(version: 20170121123724) do t.boolean "locked", default: false, null: false end + add_index "ci_runners", ["is_shared"], name: "index_ci_runners_on_is_shared", using: :btree add_index "ci_runners", ["locked"], name: "index_ci_runners_on_locked", using: :btree add_index "ci_runners", ["token"], name: "index_ci_runners_on_token", using: :btree -- cgit v1.2.1