summaryrefslogtreecommitdiff
path: root/changelogs
diff options
context:
space:
mode:
authorAndreas Brandl <abrandl@gitlab.com>2019-08-27 19:15:28 +0200
committerAndreas Brandl <abrandl@gitlab.com>2019-09-03 12:16:03 +0200
commit53801b1206ff9e165b30117e3c3bcf543db7ad2c (patch)
tree724b80019bb368f6f7e270209a612e32d578c756 /changelogs
parentf15e3efba0e0523575ce61bd80396abda94b8cec (diff)
downloadgitlab-ce-53801b1206ff9e165b30117e3c3bcf543db7ad2c.tar.gz
Preload routes informationab-routable-nplus1
This fixes a high frequency N+1 issue: `RoutableActions#find_routable!` is used across many controllers to retrieve e.g. the Project or Namespace by path. The `#find_routable!` method calls `#ensure_canonical_path` which in turn retrieves `#full_path` from the given Routable. This in turn triggers a lookup on `routes`, leading to a high frequency of these queries: ```sql SELECT "routes".* FROM "routes" WHERE "routes"."source_id" = $1 AND "routes"."source_type" = $2 LIMIT $3 ``` This is unnecessary as we already join `routes` in `Routable#find_by_full_path` anyways.
Diffstat (limited to 'changelogs')
-rw-r--r--changelogs/unreleased/ab-routable-nplus1.yml5
1 files changed, 5 insertions, 0 deletions
diff --git a/changelogs/unreleased/ab-routable-nplus1.yml b/changelogs/unreleased/ab-routable-nplus1.yml
new file mode 100644
index 00000000000..7b59bc78dae
--- /dev/null
+++ b/changelogs/unreleased/ab-routable-nplus1.yml
@@ -0,0 +1,5 @@
+---
+title: Preload routes information to fix N+1 issue
+merge_request: 32352
+author:
+type: performance