Add device_id index to Port

Some 'Port' queries use 'device_id' column for lookup.
Such queries could be observed in database query log (at least) during
instance launch. In the absence of 'device_id' index that leads to full
table scan. That causes unnecessary database load and impacts query
response time.

Change-Id: If42b7d3265e216d393d3ab8c172b97637af908cc
Closes-Bug: #1574750
This commit is contained in:
Ilya Chukhnakov 2016-04-25 22:16:54 +03:00 committed by Armando Migliaccio
parent 67b621de73
commit 3fb07b6629
3 changed files with 34 additions and 1 deletions

View File

@ -1 +1 @@
5abc0278ca73
d3435b514502

View File

@ -0,0 +1,32 @@
# Copyright 2016 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 device_id index to Port
Revision ID: d3435b514502
Revises: 5abc0278ca73
Create Date: 2016-04-25 22:13:16.676761
"""
# revision identifiers, used by Alembic.
revision = 'd3435b514502'
down_revision = '5abc0278ca73'
from alembic import op
def upgrade():
op.create_index('ix_ports_device_id', 'ports', ['device_id'], unique=False)

View File

@ -135,6 +135,7 @@ class Port(model_base.HasStandardAttributes, model_base.BASEV2,
'ix_ports_network_id_mac_address', 'network_id', 'mac_address'),
sa.Index(
'ix_ports_network_id_device_owner', 'network_id', 'device_owner'),
sa.Index('ix_ports_device_id', 'device_id'),
sa.UniqueConstraint(
network_id, mac_address,
name='uniq_ports0network_id0mac_address'),