728x90
반응형

IT/WEB 44

[JAVA] executeBatch 예외 처리 해결 (에러 무시하고 인서트)

일전에 executeBatch()를 사용해 대용량 Insert를 처리했다. public static void insertDoneMsgBatchDB(String tablename, List doneList) { Connection con = null; PreparedStatement pstmt = null; ResultSet rs = null; String queryStr = String.format("REPLACE INTO %s %s", tablename, ADD_DONE_MSG); DBConnectionMgr db = DBConnectionMgr.getInstance(); try{ //������������ �������� con = db.getConnection(); con.setAutoCommit(..

IT/WEB 2022.05.19

[JAVA] JDBC 대량 인서트 성능 향상 (addBatch, executeBatch)

기존에 5분에 한번씩 데이터를 인서트해주는 Agent가 말썽을 부려서 무려 1개월 분량의 데이터를 재처리해야 된다고 한다. 하루치 데이터만 700만건. 기존의 Agent는 5분에 한번씩 기동하기 때문에 단건으로 Insert 하여도 큰 문제가 없었으나, 에러 발생 이후로 재처리는 한달 분량을 insert 처리를 해야한다. 당연히 하루 700만건 30일치를 단건으로 insert 처리하면 속도가 안나온다. 소스 수정이 불가피했다. 기존의 Agent는 JDBC로 직접 연결해 DB에 인서트하고 있었다. 이를 addBatch와 executeBatch를 통해 해결하였다. public static void insertDoneMsgDB(String tablename, DoneMessageVO done) { Connect..

IT/WEB 2022.05.18

[JAVA] Mybatis insert foreach(foreach로 마이바티스 대량 insert 구현)

엑셀파일을 읽어서 단건으로 주소록을 입력하는 로직이 있었다. 해당 로직은 100건 ~ 1000건 정도의 주소록을 입력할 때는 크게 인서트 속도에 문제되지 않았으나 5000건에서 1만건이 넘어가는 엑셀파일을 읽고 인서트하는 과정에서 속도 이슈가 발생하였다. 속도 이슈를 해결하고자 단건으로 인서트 하고 있는 SQL문을 foreach로 변경하였다. 변경 전 XML INSERT INTO Address ( address_id, group_id, user_name, min, email, company, department, position, phone_company, phone_dep, phone_dep_pre, fax, home_post_no, home_addr_a, home_addr_b, company_post..

IT/WEB 2022.05.17

[JS] JS를 임시 비밀번호 만들기(소문자, 대문자, 숫자, 특수문자 혼합)

임시비밀번호 발급 버튼을 눌렀을 때 Javascript로 특정 패턴을 지닌(소문자, 대문자, 숫자, 특수문자 혼합) 임시비밀번호를 발급하는 로직입니다. 비밀번호* 임시비밀번호 발급 Math.random() 함수는 0이상 1미만의 구간에서 근사적으로 균일한(approximately uniform) 부동소숫점 의사난수를 반환합니다. 우리는 이 값을 원하는 범위로 변형할 수 있습니다. ==> 변환 값 : 0 ~ 1 사이 부동소숫점 난수 function go_random() { const value = Math.random(); alert(value); } 범위 지정 : 정수인 난수를 생성하는 방법은? Math.floor(); Math.floor() 함수는 소수점 1째자리 이후의 숫자를 버림하고 정수를 리턴한다..

IT/WEB 2021.11.03

[Java] static 변수와 static 메소드 대강 정리

JAVA에서 Static이란? 메모리가 한번 할당되어 프로그램이 종료될 때 해제되는 것을 의미. 일반적으로 Class는 Static 영역에 생성되고, new 연산으로 생성한 객체는 Heap 영역에 생성된다. 객체 생성시 할당된 heap영역의 메모리는 Garbage Collection(GC)을 통해 수시로 관리받음. Static 영역에 할당된 메모리는 모든 객체가 공유하는 메모리이지만, GC의 관리 영역 밖에 존재하므로 Static을 자주 사용하면 프로그램의 종료시까지 메모리가 할당된 채로 존재한다. Static 변수 특징 - Static 변수는 클래스 변수이다. - 객체를 생성하지 않고도 Static 자원에 접근이 가능하다. Static 변수(정적 변수) : JAVA에서 Static 변수는 메모리에 한번..

IT/WEB 2021.10.24

[JS] 제이쿼리 선택자에 변수 넣기

일반적으로 제이쿼리에서 선택자에 변수 넣는 방법은 document.getElementsByClassName('odumak'); document.querySelectorAll('.odumak') $(".odumak") ==> class 선택자 document.getElementById('odumak'); $("#odumak") ==> id 선택자 $("input[name='id']") ==> input 타입 name 선택자 document.getElementsByTagName('div'); $("div") ==> 태그선택자 document.querySelectorAll('[value]') document.querySelectorAll('[value="odumak"]') $('[value]'); // val..

IT/WEB 2021.10.14
728x90
반응형