This is an automated email from the ASF dual-hosted git repository.
gaoxihui pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozhera.git
The following commit(s) were added to refs/heads/master by this push:
new 6e9a4293 perf: optimize queryAllApps with conditional fetching logic
(#569)
6e9a4293 is described below
commit 6e9a4293af8dc1ba5fc3a572db6a219b4c3814fe
Author: Xue <[email protected]>
AuthorDate: Mon Mar 24 15:22:33 2025 +0800
perf: optimize queryAllApps with conditional fetching logic (#569)
* fix: test2025-0320
* perf: optimize queryAllApps with conditional fetching logic
- Modify queryAllApps to perform fuzzy search by name when provided
- Implement fallback to fetch top 100 records when no name filter exists
- Reduce full-table scan overhead and improve query performance
---------
Co-authored-by: xueshan <[email protected]>
---
.../apache/ozhera/app/api/service/HeraAppService.java | 2 ++
.../ozhera/app/dao/mapper/HeraAppBaseInfoMapper.java | 2 ++
.../ozhera/app/service/impl/HeraAppServiceImpl.java | 18 ++++++++++++++++++
.../main/resources/mapper/HeraAppBaseInfoMapper.xml | 16 ++++++++++++++++
.../ozhera/log/manager/service/HeraAppService.java | 2 ++
.../log/manager/service/impl/HeraAppServiceImpl.java | 5 +++++
.../log/manager/service/impl/LogTailServiceImpl.java | 3 ++-
7 files changed, 47 insertions(+), 1 deletion(-)
diff --git
a/ozhera-app/app-api/src/main/java/org/apache/ozhera/app/api/service/HeraAppService.java
b/ozhera-app/app-api/src/main/java/org/apache/ozhera/app/api/service/HeraAppService.java
index 464753d6..bfbe27b3 100644
---
a/ozhera-app/app-api/src/main/java/org/apache/ozhera/app/api/service/HeraAppService.java
+++
b/ozhera-app/app-api/src/main/java/org/apache/ozhera/app/api/service/HeraAppService.java
@@ -72,6 +72,8 @@ public interface HeraAppService {
Long countRole(HeraAppRoleModel roleModel);
+ List<AppBaseInfo> querySpecifiedAppInfoWithLog(String appName, Integer
limit);
+
/**
* query user have permission project
*
diff --git
a/ozhera-app/app-service/src/main/java/org/apache/ozhera/app/dao/mapper/HeraAppBaseInfoMapper.java
b/ozhera-app/app-service/src/main/java/org/apache/ozhera/app/dao/mapper/HeraAppBaseInfoMapper.java
index daf269bd..43fed1f9 100644
---
a/ozhera-app/app-service/src/main/java/org/apache/ozhera/app/dao/mapper/HeraAppBaseInfoMapper.java
+++
b/ozhera-app/app-service/src/main/java/org/apache/ozhera/app/dao/mapper/HeraAppBaseInfoMapper.java
@@ -40,6 +40,8 @@ public interface HeraAppBaseInfoMapper extends
BaseMapper<HeraAppBaseInfo> {
List<AppBaseInfo> queryAppInfo(@Param("appName") String appName,
@Param("platformType") Integer platformType, @Param("type") Integer type);
+ List<AppBaseInfo> queryLatestAppInfo(@Param("limit") Integer limit);
+
List<AppBaseInfo> queryByIds(List<Long> ids);
List<HeraAppBaseInfoParticipant> selectByParticipant(HeraAppBaseQuery
query);
diff --git
a/ozhera-app/app-service/src/main/java/org/apache/ozhera/app/service/impl/HeraAppServiceImpl.java
b/ozhera-app/app-service/src/main/java/org/apache/ozhera/app/service/impl/HeraAppServiceImpl.java
index f94a20ec..094b07da 100644
---
a/ozhera-app/app-service/src/main/java/org/apache/ozhera/app/service/impl/HeraAppServiceImpl.java
+++
b/ozhera-app/app-service/src/main/java/org/apache/ozhera/app/service/impl/HeraAppServiceImpl.java
@@ -105,6 +105,24 @@ public class HeraAppServiceImpl implements HeraAppService {
return appBaseInfos;
}
+ @Override
+ public List<AppBaseInfo> querySpecifiedAppInfoWithLog(String appName,
Integer limit) {
+ List<AppBaseInfo> appBaseInfos;
+ if (appName != null && !appName.isEmpty()) {
+ appBaseInfos = heraAppBaseInfoMapper.queryAppInfo(appName, null,
null);
+ }else{
+ appBaseInfos = heraAppBaseInfoMapper.queryLatestAppInfo(limit);
+ }
+ if (CollectionUtils.isNotEmpty(appBaseInfos)) {
+ appBaseInfos = appBaseInfos.parallelStream().map(appBaseInfo -> {
+
appBaseInfo.setPlatformName(appTypeServiceExtension.getPlatformName(appBaseInfo.getPlatformType()));
+
appBaseInfo.setAppTypeName(appTypeServiceExtension.getAppTypeName(appBaseInfo.getAppType()));
+ return appBaseInfo;
+ }).collect(Collectors.toList());
+ }
+ return appBaseInfos;
+ }
+
@Override
public List<AppBaseInfo> queryAllExistsApp() {
return queryAppInfoWithLog("", null);
diff --git
a/ozhera-app/app-service/src/main/resources/mapper/HeraAppBaseInfoMapper.xml
b/ozhera-app/app-service/src/main/resources/mapper/HeraAppBaseInfoMapper.xml
index fe839171..786dd5f7 100644
--- a/ozhera-app/app-service/src/main/resources/mapper/HeraAppBaseInfoMapper.xml
+++ b/ozhera-app/app-service/src/main/resources/mapper/HeraAppBaseInfoMapper.xml
@@ -658,6 +658,22 @@
</where>
</select>
+ <select id="queryLatestAppInfo" resultMap="queryAppResultMap">
+ SELECT hb.id AS id,
+ hb.bind_id AS bindId,
+ hb.app_name AS appName,
+ hb.app_cname AS appCname,
+ hb.app_type AS appType,
+ hb.platform_type AS platformType,
+ he.tree_ids AS treeIds,
+ he.node_ips AS nodeIPs
+ FROM hera_app_base_info hb
+ LEFT JOIN hera_app_excess_info he ON hb.id = he.app_base_id
+ ORDER BY
+ hb.update_time DESC
+ LIMIT #{limit}
+ </select>
+
<select id="countNormalData" resultType="java.lang.Long">
SELECT
count(*)
diff --git
a/ozhera-log/log-manager/src/main/java/org/apache/ozhera/log/manager/service/HeraAppService.java
b/ozhera-log/log-manager/src/main/java/org/apache/ozhera/log/manager/service/HeraAppService.java
index 6757ecfb..3323066a 100644
---
a/ozhera-log/log-manager/src/main/java/org/apache/ozhera/log/manager/service/HeraAppService.java
+++
b/ozhera-log/log-manager/src/main/java/org/apache/ozhera/log/manager/service/HeraAppService.java
@@ -60,4 +60,6 @@ public interface HeraAppService {
int delById(Integer id);
Long getAppCount();
+
+ List<AppBaseInfo> querySpecifiedAppInfoWithLog(String appName, Integer
limit);
}
diff --git
a/ozhera-log/log-manager/src/main/java/org/apache/ozhera/log/manager/service/impl/HeraAppServiceImpl.java
b/ozhera-log/log-manager/src/main/java/org/apache/ozhera/log/manager/service/impl/HeraAppServiceImpl.java
index 08e4ab51..afb1ae5f 100644
---
a/ozhera-log/log-manager/src/main/java/org/apache/ozhera/log/manager/service/impl/HeraAppServiceImpl.java
+++
b/ozhera-log/log-manager/src/main/java/org/apache/ozhera/log/manager/service/impl/HeraAppServiceImpl.java
@@ -62,6 +62,11 @@ public class HeraAppServiceImpl implements HeraAppService {
return heraAppService.queryAppInfoWithLog(appName, type);
}
+ @Override
+ public List<AppBaseInfo> querySpecifiedAppInfoWithLog(String appName,
Integer limit) {
+ return heraAppService.querySpecifiedAppInfoWithLog(appName, limit);
+ }
+
@Override
public List<AppBaseInfo> queryAllExistsApp() {
return heraAppService.queryAllExistsApp();
diff --git
a/ozhera-log/log-manager/src/main/java/org/apache/ozhera/log/manager/service/impl/LogTailServiceImpl.java
b/ozhera-log/log-manager/src/main/java/org/apache/ozhera/log/manager/service/impl/LogTailServiceImpl.java
index 6dfdecde..79e4873a 100644
---
a/ozhera-log/log-manager/src/main/java/org/apache/ozhera/log/manager/service/impl/LogTailServiceImpl.java
+++
b/ozhera-log/log-manager/src/main/java/org/apache/ozhera/log/manager/service/impl/LogTailServiceImpl.java
@@ -540,7 +540,8 @@ public class LogTailServiceImpl extends BaseService
implements LogTailService {
}
private List<MapDTO> queryAppInfo(String appName, Integer type) {
- List<AppBaseInfo> apps = heraAppService.queryAppInfoWithLog(appName,
type);
+ int limit = 100;
+ List<AppBaseInfo> apps =
heraAppService.querySpecifiedAppInfoWithLog(appName, limit);
List<MapDTO> mapDTOList = Lists.newArrayList();
if (CollectionUtils.isNotEmpty(apps)) {
mapDTOList = apps.stream().map(response -> {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]