Subnets should be set as lazy='join'

Currently if one does a net-list tons of queries are issued against the
database as the default query mode is 'select' which performs a query when
the field is actually accessed. In this patch I change the the mode to
'joined' so subnets are loaded as the networks are loaded. Usually, there
are only 1 or 2 subnets on a network so loading this data shouldn't hurt.
This patch in my setup with 5000 networks reduces the net-list call from 27
seconds to 7! Woot Woot :)

Change-Id: I10eec4d79b522dfd685d3d2aa93a8d643104bba7
Closes-bug: 1298053
This commit is contained in:
Aaron Rosen 2014-03-26 13:52:05 -07:00
parent 96c0928a46
commit cbeda85fe5
1 changed files with 2 additions and 1 deletions

View File

@ -199,7 +199,8 @@ class Network(model_base.BASEV2, HasId, HasTenant):
name = sa.Column(sa.String(255))
ports = orm.relationship(Port, backref='networks')
subnets = orm.relationship(Subnet, backref='networks')
subnets = orm.relationship(Subnet, backref='networks',
lazy="joined")
status = sa.Column(sa.String(16))
admin_state_up = sa.Column(sa.Boolean)
shared = sa.Column(sa.Boolean)