본문 바로가기
728x90
반응형
SMALL

IT/JAVA45

Cursor 와 Transaction 의 관계 (feat. fetch size) DB 에 저정되어 있는 대량 데이터를 모두 SELECT 후 어떤 처리를 해야 하는 경우 Mybatis result handler 를 이용해서 처리하는 경우도 있는데 가장 쉽게 대응할 수 있는 방법중 하나는 Cursor 를 이용하는 것이다. 사용법은 간단한다. return Type 을 List 에서 Cursor 형태로 변경하면 된다. 주의해야 할 것은 하나의 Transaction 안에서 동작해야 한다는 것이다. 생각해보면 당연하다. Cursor 를 return 하고 Cursor 를 loop 돌면 next, next ... 할 것이기 때문에 Transaction 이 끝나야 Cursor 가 close 되지 않을까? 일단위 로그 테이블의 데이터를 가져와 어떤 처리를 한다고 가정했을때 아래와 같이 코드를 작성할 .. 2023. 4. 11.
How can I get jar file's Implementation version If application support rest api pom.xml org.apache.maven.plugins maven-jar-plugin true true api controller return new ResponseEntity(getClass().getPackage().getImplementationVersion(), HttpStatus.OK); If not support rest api unzip and read Implementation-Version from MANIFEST.MF file #!/bin/sh version="$(unzip -p yhkim.jar META-INF/MANIFEST.MF | grep Implementation-Version | cut -d':' -f 2)" ver.. 2023. 2. 20.
java with cpulimit & visualvm 으로 확인 기존에 product.jar 모듈 실행시키는 스크립트 (ex. start.sh) nohup java -Xms512m -Xmx1024m -XX:MaxMetaspaceSize=256m -Dlogging.config=/productName/.conf/product_logback.xml -jar /productName/product.jar > /dev/null 2>&1 & cpulimit 처리를 위한 스크립트 추가 nohup java -Xms512m -Xmx1024m -XX:MaxMetaspaceSize=256m -Dlogging.config=/productName/.conf/product_logback.xml -jar /productName/product.jar > /dev/null 2>&1 & new_pid.. 2022. 7. 19.
CompletableFuture 를 이용한 Mybatis 쿼리 여러개 동시 수행 {dd} 별로 로그성 테이블이 있고 6월 한달동안의 데이터를 조회해서 보고서용 데이터를 합계 하려고 할 때 1. 일배치를 통해 매일 요약본을 만들고 해당 데이터를 이용하여 하나의 테이블에 insert 한 후 한번에 쿼리할수도 있고 2. 배치수행을 하지 않고 필요할 때만 조회해서 조합할수도 있다. 2번으로 진행해야 할 경우 {dd} 테이블의 데이터를 6월 1일부터 현재날짜까지 반복해서 조회해야 하고 조회한 결과를 collection 에 담아 이후 작업을 진행해야 한다. {dd} 테이블 조회 쿼리 수행이 느린 경우 그리고 이와 같은 상황 (많은 테이블에 select 해야 하는 경우)에서는 각 쿼리 수행을 async 하게 수행하고 결과를 merge 하면 된다. Future, ListenableFuture, C.. 2022. 6. 24.
728x90
반응형
LIST