From b811e5aaa1739deb92ef309c476432eb71d291f7 Mon Sep 17 00:00:00 2001 From: "review512jwy@163.com" <“review512jwy@163.com”> Date: Mon, 18 May 2026 11:17:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aws/lambda/handler/MySQLBatchToS3Handler.java | 10 +++++----- .../com/dashboard/aws/lambda/service/MySQLService.java | 7 +++---- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/dashboard/aws/lambda/handler/MySQLBatchToS3Handler.java b/src/main/java/com/dashboard/aws/lambda/handler/MySQLBatchToS3Handler.java index 2fb58ef..013822e 100644 --- a/src/main/java/com/dashboard/aws/lambda/handler/MySQLBatchToS3Handler.java +++ b/src/main/java/com/dashboard/aws/lambda/handler/MySQLBatchToS3Handler.java @@ -27,7 +27,7 @@ public class MySQLBatchToS3Handler implements RequestHandler private static final Logger logger = LoggerFactory.getLogger(MySQLBatchToS3Handler.class); private static final String DB_SCHEMA = System.getenv("DB_SCHEMA"); - private static final int INSERT_BATCH_SIZE = Integer.parseInt(System.getenv("INSERT_BATCH_SIZE")); + private static final int DB_2_S3_BATCH_SIZE = Integer.parseInt(System.getenv("DB_2_S3_BATCH_SIZE")); private static final String CUTOFF_DATE_STR = System.getenv("CUTOFF_DATE"); private static final ZoneId TOKYO_ZONE = Constants.TOKYO_ZONE; private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd"); @@ -129,7 +129,7 @@ public class MySQLBatchToS3Handler implements RequestHandler * 循环查询批次数据,直到没有数据或遇到截止日期或超时 */ private void processTable(String table, long cutoffUploadAt, long overallStartTime, FailedRecords failedRecords) { - logger.info("[{}][{}] start processing batch size: {}, cutoff upload_at: {}", DB_SCHEMA, table, INSERT_BATCH_SIZE, cutoffUploadAt); + logger.info("[{}][{}] start processing batch size: {}, cutoff upload_at: {}", DB_SCHEMA, table, DB_2_S3_BATCH_SIZE, cutoffUploadAt); long tableStartTime = System.currentTimeMillis(); Long lastProcessedId = null; @@ -148,7 +148,7 @@ public class MySQLBatchToS3Handler implements RequestHandler // 查询当前批次数据 List> rows = null; try { - rows = mysqlService.queryFirstNByIdGreaterThan(DB_SCHEMA, table, INSERT_BATCH_SIZE, lastProcessedId); + rows = mysqlService.queryFirstNByIdGreaterThan(DB_SCHEMA, table, DB_2_S3_BATCH_SIZE, lastProcessedId); } catch (Exception e) { logger.error("[{}][{}] query failed", DB_SCHEMA, table, e); break; @@ -198,7 +198,7 @@ public class MySQLBatchToS3Handler implements RequestHandler // 如果当前批次没有有效数据,继续下一批 if (grouped.isEmpty()) { logger.info("[{}][{}] no valid data in this batch", DB_SCHEMA, table); - if (validCount < INSERT_BATCH_SIZE || reachedCutoff) { + if (validCount < DB_2_S3_BATCH_SIZE || reachedCutoff) { shouldContinue = false; } else { lastProcessedId = maxIdInBatch; @@ -276,7 +276,7 @@ public class MySQLBatchToS3Handler implements RequestHandler } // 确定是否继续:只有全部成功且当前批次是完整批次且没有达到cutoff时才继续 - if (anyFailure || validCount < INSERT_BATCH_SIZE || reachedCutoff) { + if (anyFailure || validCount < DB_2_S3_BATCH_SIZE || reachedCutoff) { shouldContinue = false; } } diff --git a/src/main/java/com/dashboard/aws/lambda/service/MySQLService.java b/src/main/java/com/dashboard/aws/lambda/service/MySQLService.java index b2cffd7..f9109ee 100644 --- a/src/main/java/com/dashboard/aws/lambda/service/MySQLService.java +++ b/src/main/java/com/dashboard/aws/lambda/service/MySQLService.java @@ -137,15 +137,14 @@ public class MySQLService { // 执行批量插入 int[] results = ps.executeBatch(); - batchInserted = 0; - for (int r : results) { - batchInserted += r; - } // 提交当前批次事务,每个批次独立事务,失败不影响其他批次 conn.commit(); + //成功才加到 total + batchInserted = results.length; // 用批次大小 total += batchInserted; + batchSuccess = true; if (retryCount == 0) {