devnoong.log
article thumbnail
728x90

데이터를 산출해야하는 건이 있었는데 요청건수가 너무 많아서 일반 SQL 문만으로는 불가능했었습니다.

COUNT로 대략 건수를 확인해봤을때 14594519 건정도....?

 

1차로 실행계획을 확인 후에 조인으로 연결된 FROM 절이 PK를 타고 있지 않아서 해당 부분 PK 탈수 있도록 서브쿼리로 변경했습니다

 

두번 TABLE FULL SCAN하는것을 그나마 한번으로 변경....ㅜ.ㅜ

2차로 힌트절을 이용해보기 위해 관련된 힌트절을 찾다가 PARALLEL 힌트를 알게 되어 공유하고자 합니다.

 

페러럴 힌트는 병렬 처리 작업을 지원해줍니다. 

기본적으로는 한개의 프로세스를 통해서 실행하는데 페러럴 힌트를 이용하면 여러개의 쓰레드에 분산하여  N개의 프로세스로 작업을 수행하기때문에 빠른 속도를 확인해볼 수 있습니다.

 

하나의 코어로 처리하던 SQL을 여러개의 코어로 처리하기 때문에 시간은 훨씬 단축된다는 장점이 있어 대용량의 데이터 처리시 사용되고 있습니다.

 

사용하는 PC의 CPU Core 갯수를 확인하는 방법은 작업 관리자를 열고 성능탭의 CPU 를 통해서 Core 갯수를 확인 가능합니다.

 

저는 코어가 6개로 구성되어 있기때문에 /*+parallel(6) */ 까지만 수행할 수 있습니다.

만약 코어 갯수를 몰라 병렬프로세스 갯수를 지정하지 않으면 병렬프로세스가 시스템디폴트 갯수만큼 기동될 수 있습니다.

 

 

 

하지만, 그만큼 시스템 자원을 많이 쓰기 때문에 무지성으로 사용하다보면 DB가 뻗을 수 도 있어 주의해서 사용하는것을 권장드립니다.

 

보통은 4로 지정해놓고 쓰고 그 이상은 부하가 갈 수 있기때문에 권장을 하지 않는 것 같습니다.

사용 방법은 아래와 같이  /*+PARALLEL(갯수)*/ 를 기입하여 사용하면 됩니다.

 

 

 

기존에 힌트절을 사용하기전의 COST를 비교해봤을때 사용전 COST는 아래와 같이 소요되었습니다.

 

힌트절을 사용 후에는 COST가 확 떨어진것을 확인 할 수 있습니다.

 

여러 힌트절을 이용했을때도 속도 개선이 나지 않는다면 최후의 방법으로 사용하거나 대용량 데이터 산출건을 이용할때 사용하기 좋다는게 저의 개인적인 의견입니다ㅎㅎ

 

 

그럼 안뇽~~

728x90

'DB > Oracle' 카테고리의 다른 글

[DB] Oracle USE_HASH hint 사용하기  (0) 2023.07.20
[DB] SELECT ~ FOR UPDATE 문 사용 법  (0) 2022.11.10
[DB] 힌트 예제 정리  (0) 2022.07.28
[DB] 힌트에 대해서  (0) 2022.07.27
[DB] INDEX에 대해서  (0) 2022.07.27