From d19b4f0f976a97c6428c8f5fdf7d2c383bf2e760 Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Thu, 14 Apr 2016 11:06:49 +0200 Subject: SONAR-7187 Fix perf issue in selectByQuery Replace usage of RowBounds by SQL pagination --- .../main/java/org/sonar/db/ce/CeActivityDao.java | 2 +- .../java/org/sonar/db/ce/CeActivityMapper.java | 2 +- .../resources/org/sonar/db/ce/CeActivityMapper.xml | 28 ++++++++++++++++-- .../java/org/sonar/db/ce/CeActivityDaoTest.java | 33 +++++++++++++++++++++- 4 files changed, 60 insertions(+), 5 deletions(-) (limited to 'sonar-db') diff --git a/sonar-db/src/main/java/org/sonar/db/ce/CeActivityDao.java b/sonar-db/src/main/java/org/sonar/db/ce/CeActivityDao.java index 050389c8858..e32a1be1535 100644 --- a/sonar-db/src/main/java/org/sonar/db/ce/CeActivityDao.java +++ b/sonar-db/src/main/java/org/sonar/db/ce/CeActivityDao.java @@ -69,7 +69,7 @@ public class CeActivityDao implements Dao { return Collections.emptyList(); } - return mapper(dbSession).selectByQuery(query, new RowBounds(offset, pageSize)); + return mapper(dbSession).selectByQuery(query, offset, pageSize); } public int countByQuery(DbSession dbSession, CeTaskQuery query) { diff --git a/sonar-db/src/main/java/org/sonar/db/ce/CeActivityMapper.java b/sonar-db/src/main/java/org/sonar/db/ce/CeActivityMapper.java index a59254827ed..ea4652d4185 100644 --- a/sonar-db/src/main/java/org/sonar/db/ce/CeActivityMapper.java +++ b/sonar-db/src/main/java/org/sonar/db/ce/CeActivityMapper.java @@ -33,7 +33,7 @@ public interface CeActivityMapper { List selectByComponentUuid(@Param("componentUuid") String componentUuid); - List selectByQuery(@Param("query") CeTaskQuery query, RowBounds rowBounds); + List selectByQuery(@Param("query") CeTaskQuery query, @Param("offset") int offset, @Param("pageSize") int pageSize); List selectOlderThan(@Param("beforeDate") long beforeDate); diff --git a/sonar-db/src/main/resources/org/sonar/db/ce/CeActivityMapper.xml b/sonar-db/src/main/resources/org/sonar/db/ce/CeActivityMapper.xml index d86c8f73212..08247b4faa1 100644 --- a/sonar-db/src/main/resources/org/sonar/db/ce/CeActivityMapper.xml +++ b/sonar-db/src/main/resources/org/sonar/db/ce/CeActivityMapper.xml @@ -4,6 +4,7 @@ + ca.id, ca.uuid, ca.task_type as taskType, ca.component_uuid as componentUuid, @@ -44,10 +45,33 @@ + + + +