From fb9b6888c1249abd1e3406096c4304327bddce48 Mon Sep 17 00:00:00 2001 From: Roland Hochmuth Date: Wed, 29 Jul 2015 22:40:33 -0600 Subject: [PATCH] Modified query in getAlarmedMetrics for performance Change-Id: I3520ea7154a450c5cbb5d4aecf152e1521435907 --- thresh/pom.xml | 2 +- .../thresh/infrastructure/persistence/AlarmDAOImpl.java | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/thresh/pom.xml b/thresh/pom.xml index 2055152..c67f9a6 100644 --- a/thresh/pom.xml +++ b/thresh/pom.xml @@ -22,7 +22,7 @@ ${project.version}-${timestamp}-${gitRevision} ${project.artifactId}-${computedVersion} 1.1.0-SNAPSHOT - 0.9.1-incubating + 0.9.5 false UTF-8 UTF-8 diff --git a/thresh/src/main/java/monasca/thresh/infrastructure/persistence/AlarmDAOImpl.java b/thresh/src/main/java/monasca/thresh/infrastructure/persistence/AlarmDAOImpl.java index 6744339..8069612 100644 --- a/thresh/src/main/java/monasca/thresh/infrastructure/persistence/AlarmDAOImpl.java +++ b/thresh/src/main/java/monasca/thresh/infrastructure/persistence/AlarmDAOImpl.java @@ -131,12 +131,15 @@ public class AlarmDAOImpl implements AlarmDAO { private void getAlarmedMetrics(Handle h, final Map alarmMap, final Map tenantIdMap, final String additionalWhereClause, String ... params) { - final String baseSql = "select a.id, md.name, mdg.dimensions from metric_definition as md " + final String baseSql = "select a.id, md.name, group_concat(mdim.name, '=', mdim.value order by mdim.name) as dimensions " + + "from metric_definition as md " + "inner join metric_definition_dimensions as mdd on md.id = mdd.metric_definition_id " + "inner join alarm_metric as am on mdd.id = am.metric_definition_dimensions_id " + "inner join alarm as a on am.alarm_id = a.id " - + "left join (select dimension_set_id, name, value, group_concat(name, '=', value) as dimensions " - + " from metric_dimension group by dimension_set_id) as mdg on mdg.dimension_set_id = mdd.metric_dimension_set_id where %s"; + + "left join metric_dimension as mdim on mdim.dimension_set_id = mdd.metric_dimension_set_id " + + "where %s " + + "group by a.id, md.name, mdim.dimension_set_id " + + "order by dimensions"; final String sql = String.format(baseSql, additionalWhereClause); final Query> query = h.createQuery(sql); addQueryParameters(query, params);