2019-04-12

흉악한 오라클 PARALLEL

약 350만 건에 이르는 데이터가 들어있는 테이블의 데이터를 삭제할 일이 생겼다.
특정 테이블에 값이 없는 레코드만 삭제를 해야 되는데 오라클 DELETE는 JOIN 그런거 없ㅋ어ㅋ...

그래서 구글신을 영접해보니까 PARALLEL 힌트가 있드라고?
해서 실험해봤습니다.





오늘의 슨슈들입니다.
위에서부터 그냥 쿼리, DELETE에만 PARALLEL을 적용한 쿼리, 서브쿼리에도 PARALLEL을 적용한 쿼리 되시겠습니다.

그냥 쿼리부터 보시겠습니다.
아 시바 할 말을 잊었습니다.
저거 저대로 돌리면 최소 반나절이 증발합니다.

그래서 한번 DELETE에 PARALLEL을 적용해 봤습니다.
오 조금 나아졌네요.
하지만 아직 부족합니다.

여러 테이블에 걸쳐서 PARALLEL을 쓰려면 조금 귀찮은 단계를 거쳐야 합니다.
하지만 성능은 확실하죠.





와아! COST가 쭈욱 내려가네요!
마치 연쇄할인마 스팀을 보는 것 같습니다.

Share:

2018-02-27

2017-10-02

2017-09-21

mybatis 유감

mybatis 쓰느니 그냥 SQL 날코딩해서 JDBC로 다이렉트 호출 할래...

스프링이라면 JDBCTemplate이라는 거도 있고
쿼리문 날코딩이 귀찮으면 querydsl로 메타데이터 뽑아서 쿼리를 코드로 짜도 되고...
Share:

2017-02-28

Hudson/Jenkins proxy with Nginx

허드슨이나 젠킨스를 맨날 단독으로 띄워서 쓰다가
Let’s Encrypt를 적용하면서 앞에다가 nginx를 두고 프록시로 요청을 받게 설정했다.

그런데 자꾸 다음 메세지가 나면서 로그인할 때나 일부 링크가 엉뚱한 곳으로 간다.
It appears that your reverse proxy set up is broken

구글신의 신탁을 받아 이곳 저곳을 돌아봤는데 다 소용이 없었다.
그래서 그냥 소스를 까볼까? 해서 봤더니…
소스 링크

X-Forwarded-Host를 받고 계셨어요?

그래서 nginx 설정에서 프록시 헤더를
proxy_set_header   X-Forwarded-Host   $host:$server_port;
proxy_set_header   X-Forwarded-Proto  $scheme;
이렇게 설정해주니까 잘 된다.

역시 답 없을 때는 소스를 직접 들여다 보는게 답이네.
Share: