Leistungsoptimierungstipps

Ich habe meinen Server über eine saubere Installation und Wiederherstellung aus einem Backup zu einem leistungsfähigeren Hoster umgezogen. Ja, er ist jetzt viel schneller! Aber es gibt eine Engstelle bei der Like-Funktion. Es dauert 23 Sekunden, um einen Like zu erstellen.

Aktion ausführen: erstellen
T+229,3 ms
Leser
23169,7 ms

app/models/topic_user.rb:463:in `update_post_action_cache'
app/models/post_action.rb:232:in `update_counters'
lib/post_action_creator.rb:268:in `create_post_action'
lib/post_action_creator.rb:112:in `perform'
app/controllers/post_actions_controller.rb:22:in `create'
app/controllers/application_controller.rb:415:in `block in with_resolved_locale'
app/controllers/application_controller.rb:415:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:71:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:368:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
lib/middleware/request_tracker.rb:202:in `call'
UPDATE topic_users tu
SET liked = x.state
FROM (
  SELECT CASE WHEN EXISTS (
    SELECT 1
    FROM post_actions pa
    JOIN posts p on p.id = pa.post_id
    JOIN topics t ON t.id = p.topic_id
    WHERE pa.deleted_at IS NULL AND
          p.deleted_at IS NULL AND
          t.deleted_at IS NULL AND
          pa.post_action_type_id = 2 AND
          tu2.topic_id = t.id AND
          tu2.user_id = pa.user_id
    LIMIT 1
  ) THEN true ELSE false END state, tu2.topic_id, tu2.user_id
  FROM topic_users tu2
  WHERE (tu2.user_id IN (1)) AND (tu2.topic_id IN (127680))
) x
WHERE x.topic_id = tu.topic_id AND x.user_id = tu.user_id AND x.state != tu.liked
;

Brauche ich mehr Zeit, um die Datenbank einzurichten und neu zu indizieren, oder gibt es ein Problem?