From a3ac1e3072293ab5ce5efcda214019a9daffc04e Mon Sep 17 00:00:00 2001 From: Lukas Matt Date: Sun, 27 Mar 2016 12:42:06 +0200 Subject: [PATCH] account_deletions get stuck while selecting participations Following query takes over 20 minutes and fills up the database: SELECT * FROM participations WHERE author_id = XXXXX On servers with a huge participations-table this is a serious performance issue which is easily fixed by the author_id index Signed-off-by: Lukas Matt --- Changelog.md | 1 + .../20160327103605_add_author_id_index_to_participations.rb | 5 +++++ db/schema.rb | 3 ++- 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20160327103605_add_author_id_index_to_participations.rb diff --git a/Changelog.md b/Changelog.md index 6657dd551..d3e6a457f 100644 --- a/Changelog.md +++ b/Changelog.md @@ -2,6 +2,7 @@ ## Refactor * Sort tag autocompletion by tag name [#6734](https://github.com/diaspora/diaspora/pull/6734) +* Make account deletions faster by adding an index [#6771](https://github.com/diaspora/diaspora/pull/6771) ## Bug fixes * Fix empty name field when editing aspect names [#6706](https://github.com/diaspora/diaspora/pull/6706) diff --git a/db/migrate/20160327103605_add_author_id_index_to_participations.rb b/db/migrate/20160327103605_add_author_id_index_to_participations.rb new file mode 100644 index 000000000..8a6382aeb --- /dev/null +++ b/db/migrate/20160327103605_add_author_id_index_to_participations.rb @@ -0,0 +1,5 @@ +class AddAuthorIdIndexToParticipations < ActiveRecord::Migration + def change + add_index :participations, :author_id, :using => :btree + end +end diff --git a/db/schema.rb b/db/schema.rb index 55e9e9547..f0002b483 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: 20150724152052) do +ActiveRecord::Schema.define(version: 20160327103605) do create_table "account_deletions", force: :cascade do |t| t.string "diaspora_handle", limit: 255 @@ -262,6 +262,7 @@ ActiveRecord::Schema.define(version: 20150724152052) do t.datetime "updated_at", null: false end + add_index "participations", ["author_id"], name: "index_participations_on_author_id", using: :btree add_index "participations", ["guid"], name: "index_participations_on_guid", length: {"guid"=>191}, using: :btree add_index "participations", ["target_id", "target_type", "author_id"], name: "index_participations_on_target_id_and_target_type_and_author_id", using: :btree