From f01e48557863a4b6d4e75fe368e0185652aab09f Mon Sep 17 00:00:00 2001 From: Sebastian Lohff Date: Wed, 19 Jun 2019 16:21:19 +0200 Subject: [PATCH] Improve share list speed using lazy='subquery' lazy='immediate' leads to each relationship being collected when it is accessed. This results in at least three extra queries when we query for all share details. lazy='subquery' collects all data when the query is executed. In this commit we only changed code for improving the share list with details ("manila list") speed. Change-Id: Ia61b108ece0817069737980a614cc6c15c1a3507 Closes-Bug: #1859785 Co-authored-by: Johannes Kulik Co-authored-by: Maurice Escher (cherry picked from commit 54c5667e6b4a37270c4aed64b9a5ebd5f31bfa16) --- manila/db/sqlalchemy/models.py | 6 +++--- .../bug-1859785-share-list-speed-6b09e7717624e037.yaml | 7 +++++++ 2 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 releasenotes/notes/bug-1859785-share-list-speed-6b09e7717624e037.yaml diff --git a/manila/db/sqlalchemy/models.py b/manila/db/sqlalchemy/models.py index 7577a0e51a..f1c0f97471 100644 --- a/manila/db/sqlalchemy/models.py +++ b/manila/db/sqlalchemy/models.py @@ -318,7 +318,7 @@ class Share(BASE, ManilaBase): task_state = Column(String(255)) instances = orm.relationship( "ShareInstance", - lazy='immediate', + lazy='subquery', primaryjoin=( 'and_(' 'Share.id == ShareInstance.share_id, ' @@ -388,7 +388,7 @@ class ShareInstance(BASE, ManilaBase): nullable=True) _availability_zone = orm.relationship( "AvailabilityZone", - lazy='immediate', + lazy='subquery', foreign_keys=availability_zone_id, primaryjoin=( 'and_(' @@ -415,7 +415,7 @@ class ShareInstance(BASE, ManilaBase): nullable=True) share_type = orm.relationship( "ShareTypes", - lazy='immediate', + lazy='subquery', foreign_keys=share_type_id, primaryjoin='and_(' 'ShareInstance.share_type_id == ShareTypes.id, ' diff --git a/releasenotes/notes/bug-1859785-share-list-speed-6b09e7717624e037.yaml b/releasenotes/notes/bug-1859785-share-list-speed-6b09e7717624e037.yaml new file mode 100644 index 0000000000..d9d6739cc2 --- /dev/null +++ b/releasenotes/notes/bug-1859785-share-list-speed-6b09e7717624e037.yaml @@ -0,0 +1,7 @@ +--- +fixes: + - | + Improved share list speed using lazy='subquery'. The sqlalchemy models of + Share and Share Instance relationships previously had lazy='immediate'. + This resulted in at least three extra queries when we queried for all share + details.