From 8515ea864089579610d96d7febe76f5d1ac88cde Mon Sep 17 00:00:00 2001 From: chris-sun-star Date: Tue, 3 Feb 2026 17:20:14 +0800 Subject: [PATCH] use the latest sql plan to get the cost --- internal/sql-analyzer/const/sql/sql_plan.go | 60 ++++++------------- .../sql-analyzer/generated/swagger/docs.go | 3 +- .../generated/swagger/swagger.json | 3 +- .../generated/swagger/swagger.yaml | 3 +- 4 files changed, 25 insertions(+), 44 deletions(-) diff --git a/internal/sql-analyzer/const/sql/sql_plan.go b/internal/sql-analyzer/const/sql/sql_plan.go index bb525487f..db7016d67 100644 --- a/internal/sql-analyzer/const/sql/sql_plan.go +++ b/internal/sql-analyzer/const/sql/sql_plan.go @@ -83,32 +83,6 @@ const ( CheckPlanExistence = `SELECT COUNT(*) FROM sql_plan WHERE TENANT_ID = ? AND SVR_IP = ? AND SVR_PORT = ? AND PLAN_ID = ?` GetPlanStats = ` WITH PlanAgg AS ( - SELECT - TENANT_ID, - SVR_IP, - SVR_PORT, - PLAN_ID, - PLAN_HASH, - MAX(GMT_CREATE) as GMT_CREATE, - SUM(IO_COST) as IO_COST, - SUM(CPU_COST) as CPU_COST, - SUM(COST) as COST, - SUM(REAL_COST) as REAL_COST - FROM sql_plan - WHERE SQL_ID = ? - GROUP BY TENANT_ID, SVR_IP, SVR_PORT, PLAN_ID, PLAN_HASH - ), - PlanStats AS ( - SELECT - PLAN_HASH, - CAST(AVG(IO_COST) AS BIGINT) as IO_COST, - CAST(AVG(CPU_COST) AS BIGINT) as CPU_COST, - CAST(AVG(COST) AS BIGINT) as COST, - CAST(AVG(REAL_COST) AS BIGINT) as REAL_COST - FROM PlanAgg - GROUP BY PLAN_HASH - ), - LatestPlan AS ( SELECT TENANT_ID, SVR_IP, @@ -116,23 +90,27 @@ const ( PLAN_ID, PLAN_HASH, GMT_CREATE, - ROW_NUMBER() OVER (PARTITION BY PLAN_HASH ORDER BY GMT_CREATE DESC, PLAN_ID DESC) as rn - FROM PlanAgg + IO_COST, + CPU_COST, + COST, + REAL_COST, + ROW_NUMBER() OVER (PARTITION BY TENANT_ID, SVR_IP, SVR_PORT, PLAN_HASH ORDER BY GMT_CREATE DESC, PLAN_ID DESC) as rn + FROM sql_plan + WHERE SQL_ID = ? AND ID = 0 ) SELECT - lp.TENANT_ID, - lp.SVR_IP, - lp.SVR_PORT, - lp.PLAN_ID, - lp.PLAN_HASH, - lp.GMT_CREATE, - ps.IO_COST, - ps.CPU_COST, - ps.COST, - ps.REAL_COST - FROM LatestPlan lp - JOIN PlanStats ps ON lp.PLAN_HASH = ps.PLAN_HASH - WHERE lp.rn = 1 + TENANT_ID, + SVR_IP, + SVR_PORT, + PLAN_ID, + PLAN_HASH, + GMT_CREATE, + IO_COST, + CPU_COST, + COST, + REAL_COST + FROM PlanAgg + WHERE rn = 1 ` GetTableInfo = ` SELECT diff --git a/internal/sql-analyzer/generated/swagger/docs.go b/internal/sql-analyzer/generated/swagger/docs.go index 475eeb409..5722b48c2 100644 --- a/internal/sql-analyzer/generated/swagger/docs.go +++ b/internal/sql-analyzer/generated/swagger/docs.go @@ -333,7 +333,8 @@ const docTemplate = `{ "type": "integer" }, "planHash": { - "type": "integer" + "type": "string", + "example": "0" }, "planId": { "type": "integer" diff --git a/internal/sql-analyzer/generated/swagger/swagger.json b/internal/sql-analyzer/generated/swagger/swagger.json index ecb1993cd..2561bae13 100644 --- a/internal/sql-analyzer/generated/swagger/swagger.json +++ b/internal/sql-analyzer/generated/swagger/swagger.json @@ -322,7 +322,8 @@ "type": "integer" }, "planHash": { - "type": "integer" + "type": "string", + "example": "0" }, "planId": { "type": "integer" diff --git a/internal/sql-analyzer/generated/swagger/swagger.yaml b/internal/sql-analyzer/generated/swagger/swagger.yaml index 484218797..8e0494917 100644 --- a/internal/sql-analyzer/generated/swagger/swagger.yaml +++ b/internal/sql-analyzer/generated/swagger/swagger.yaml @@ -62,7 +62,8 @@ definitions: ioCost: type: integer planHash: - type: integer + example: "0" + type: string planId: type: integer realCost: