]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Add index on tenant_id
authorRoman Podoliaka <rpodolyaka@mirantis.com>
Fri, 19 Dec 2014 10:31:07 +0000 (12:31 +0200)
committerAnn Kamyshnikova <akamyshnikova@mirantis.com>
Tue, 10 Feb 2015 15:17:40 +0000 (18:17 +0300)
This will greatly speed up SELECTs with filters by tenant_id (e.g.
when checking if we are going to exceed the quota value per resource
per tenant).

Closes-bug: #1419815

Change-Id: Iab80cce701e1f12dbf7a4f60d5ce945c6e7d0e2d

neutron/db/migration/alembic_migrations/versions/4119216b7365_add_tenant_id_idx.py [new file with mode: 0644]
neutron/db/migration/alembic_migrations/versions/HEAD
neutron/db/models_v2.py

diff --git a/neutron/db/migration/alembic_migrations/versions/4119216b7365_add_tenant_id_idx.py b/neutron/db/migration/alembic_migrations/versions/4119216b7365_add_tenant_id_idx.py
new file mode 100644 (file)
index 0000000..72f5f50
--- /dev/null
@@ -0,0 +1,48 @@
+# Copyright 2015 OpenStack Foundation
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+#
+
+"""Add index on tenant_id column
+
+Revision ID: 4119216b7365
+Revises: 28c0ffb8ebbd
+Create Date: 2014-12-19 12:21:54.439723
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = '4119216b7365'
+down_revision = 'bebba223288'
+
+from alembic import op
+
+TABLES = ['floatingips', 'networkconnections', 'networkgatewaydevices',
+          'networks', 'packetfilters', 'ports', 'qosqueues', 'routers',
+          'securitygrouprules', 'securitygroups', 'subnets', 'meteringlabels',
+          'arista_provisioned_nets', 'arista_provisioned_tenants',
+          'arista_provisioned_vms', 'cisco_hosting_devices',
+          'cisco_ml2_apic_contracts', 'ml2_brocadenetworks',
+          'ml2_brocadeports']
+
+
+def upgrade():
+    for table in TABLES:
+        op.create_index(op.f('ix_%s_tenant_id' % table),
+                        table, ['tenant_id'], unique=False)
+
+
+def downgrade():
+    for table in TABLES:
+        op.drop_index(op.f('ix_%s_tenant_id' % table),
+                      table_name=table)
index 0c8b6ed2229b1554e687873e0d55a4173b7dab96..fa3deb739b5c29b4ca456528677fa0ebfd5a0323 100644 (file)
@@ -1 +1 @@
-bebba223288
+4119216b7365
index 12da571184be3405a34d3ffc7e5ad28b3312afd2..c0578003970d06df92eaf00c44f5d72a6be0b04d 100644 (file)
@@ -25,7 +25,7 @@ class HasTenant(object):
     """Tenant mixin, add to subclasses that have a tenant."""
 
     # NOTE(jkoelker) tenant_id is just a free form string ;(
-    tenant_id = sa.Column(sa.String(255))
+    tenant_id = sa.Column(sa.String(255), index=True)
 
 
 class HasId(object):