From 0ac1e639d962f0f2f10846b60dee9818efd0b08f Mon Sep 17 00:00:00 2001 From: Kevin Yang Date: Mon, 26 Nov 2018 21:49:31 -0800 Subject: [PATCH] [AIRFLOW-3392] Add index on dag_id in sla_miss table (#4235) The select queries on sla_miss table produce a great % of DB traffic and thus made the DB CPU usage unnecessarily high. It would be a low hanging fruit to add an index and reduce the load. --- .../versions/03bc53e68815_add_sm_dag_index.py | 40 +++++++++++++++++++ airflow/models.py | 4 ++ 2 files changed, 44 insertions(+) create mode 100644 airflow/migrations/versions/03bc53e68815_add_sm_dag_index.py diff --git a/airflow/migrations/versions/03bc53e68815_add_sm_dag_index.py b/airflow/migrations/versions/03bc53e68815_add_sm_dag_index.py new file mode 100644 index 0000000000000..fc8468155c235 --- /dev/null +++ b/airflow/migrations/versions/03bc53e68815_add_sm_dag_index.py @@ -0,0 +1,40 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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. + +"""merge_heads_2 + +Revision ID: 03bc53e68815 +Revises: 0a2a5b66e19d, bf00311e1990 +Create Date: 2018-11-24 20:21:46.605414 + +""" + +from alembic import op + +# revision identifiers, used by Alembic. +revision = '03bc53e68815' +down_revision = ('0a2a5b66e19d', 'bf00311e1990') +branch_labels = None +depends_on = None + + +def upgrade(): + op.create_index('sm_dag', 'sla_miss', ['dag_id'], unique=False) + + +def downgrade(): + op.drop_index('sm_dag', table_name='sla_miss') diff --git a/airflow/models.py b/airflow/models.py index c1c242020da71..a17db019397ea 100755 --- a/airflow/models.py +++ b/airflow/models.py @@ -5477,6 +5477,10 @@ class SlaMiss(Base): description = Column(Text) notification_sent = Column(Boolean, default=False) + __table_args__ = ( + Index('sm_dag', dag_id, unique=False), + ) + def __repr__(self): return str(( self.dag_id, self.task_id, self.execution_date.isoformat()))