2019-07-19
2019-04-12
흉악한 오라클 PARALLEL
약 350만 건에 이르는 데이터가 들어있는 테이블의 데이터를 삭제할 일이 생겼다.
특정 테이블에 값이 없는 레코드만 삭제를 해야 되는데 오라클 DELETE는 JOIN 그런거 없ㅋ어ㅋ...
그래서 구글신을 영접해보니까 PARALLEL 힌트가 있드라고?
해서 실험해봤습니다.
오늘의 슨슈들입니다.
위에서부터 그냥 쿼리, DELETE에만 PARALLEL을 적용한 쿼리, 서브쿼리에도 PARALLEL을 적용한 쿼리 되시겠습니다.
그냥 쿼리부터 보시겠습니다.
아 시바 할 말을 잊었습니다.
저거 저대로 돌리면 최소 반나절이 증발합니다.
그래서 한번 DELETE에 PARALLEL을 적용해 봤습니다.
오 조금 나아졌네요.
하지만 아직 부족합니다.
여러 테이블에 걸쳐서 PARALLEL을 쓰려면 조금 귀찮은 단계를 거쳐야 합니다.
하지만 성능은 확실하죠.
와아! COST가 쭈욱 내려가네요!
마치 연쇄할인마 스팀을 보는 것 같습니다.
특정 테이블에 값이 없는 레코드만 삭제를 해야 되는데 오라클 DELETE는 JOIN 그런거 없ㅋ어ㅋ...
그래서 구글신을 영접해보니까 PARALLEL 힌트가 있드라고?
해서 실험해봤습니다.
오늘의 슨슈들입니다.
위에서부터 그냥 쿼리, DELETE에만 PARALLEL을 적용한 쿼리, 서브쿼리에도 PARALLEL을 적용한 쿼리 되시겠습니다.
그냥 쿼리부터 보시겠습니다.
아 시바 할 말을 잊었습니다.
저거 저대로 돌리면 최소 반나절이 증발합니다.
그래서 한번 DELETE에 PARALLEL을 적용해 봤습니다.
오 조금 나아졌네요.
하지만 아직 부족합니다.
여러 테이블에 걸쳐서 PARALLEL을 쓰려면 조금 귀찮은 단계를 거쳐야 합니다.
하지만 성능은 확실하죠.
와아! COST가 쭈욱 내려가네요!
마치 연쇄할인마 스팀을 보는 것 같습니다.
2018-02-27
2017-10-02
2017-09-21
mybatis 유감
mybatis 쓰느니 그냥 SQL 날코딩해서 JDBC로 다이렉트 호출 할래...
스프링이라면 JDBCTemplate이라는 거도 있고
쿼리문 날코딩이 귀찮으면 querydsl로 메타데이터 뽑아서 쿼리를 코드로 짜도 되고...
스프링이라면 JDBCTemplate이라는 거도 있고
쿼리문 날코딩이 귀찮으면 querydsl로 메타데이터 뽑아서 쿼리를 코드로 짜도 되고...