From aa51dd1755c0923ed3dfd96a8b6e0ecaeb2d0562 Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Thu, 28 Nov 2024 11:34:51 +0900 Subject: [PATCH] =?UTF-8?q?=EB=AC=B8=EC=9E=90=EC=A0=84=EC=86=A1=20?= =?UTF-8?q?=EB=B0=B0=EC=B9=98=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/MjonMsgDataServiceImpl.java | 35 +++++++++++-------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java b/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java index 2c6c17fc..273af92e 100644 --- a/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java +++ b/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java @@ -4179,20 +4179,26 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M // int instCnt = mjonMsgDataDAO.insertMsgDataInfo_jdbc_advc(mjonMsgSendVOList); // - int instCnt = 0; - int batchSize = (int) Math.ceil((double) mjonMsgSendVOList.size() / 3); // Batch 크기 계산 - // Batch 처리 - for (int i = 0; i < mjonMsgSendVOList.size(); i += batchSize) { - System.out.println(" i :: "+ i); - // Batch 크기만큼 리스트를 잘라냄 - List batchList = mjonMsgSendVOList.subList( - i, Math.min(i + batchSize, mjonMsgSendVOList.size()) - ); - - // DAO 메서드 호출 - int insertedCount = mjonMsgDataDAO.insertMsgDataInfo_advc(batchList); - instCnt += insertedCount; // 총 삽입된 건수 누적 - } + int totalSize = mjonMsgSendVOList.size(); // 총 데이터 개수 + int batchSize = (int) Math.ceil((double) totalSize / 3); // 기본 3등분 크기 계산 + + // Batch 크기가 7000을 초과하면 7000으로 제한 + batchSize = Math.min(batchSize, 7000); + + int instCnt = 0; + + int j = 0; + for (int i = 0; i < totalSize; i += batchSize) { + // Batch 리스트 생성 + List batchList = mjonMsgSendVOList.subList( + i, Math.min(i + batchSize, totalSize) + ); + System.out.println("i : "+ i); + // DAO 호출 + int insertedCount = mjonMsgDataDAO.insertMsgDataInfo_advc(batchList); + instCnt += insertedCount; + j++; + } // 종료 시간 측정 @@ -4200,6 +4206,7 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M // 실행 시간 계산 (밀리초 -> 초로 변환) double executionTimeInSeconds = (endTime - startTime) / 1000.0; // 실행 시간 출력 + System.out.println("j :: " + j); System.out.println("batchSize :: " + batchSize); System.out.println("Execution time :: " + executionTimeInSeconds + "초 " + "// insert Cnt :: "+instCnt); // mjonMsgSendVOList.stream().forEach(t-> System.out.print(t.toString()+"\n") );