728x90

LOUPOS님 | 튜닝 | 2013-10-04 18:09:30

 

인덱스도 잘타고.. 코스트도 페치하기 전엔 10-20 정도에.. 최종코스트 50정도면 작은거 같은데.. 
리스트뽑아올때 30초씩걸리는 이유 아시는분...(1분걸림..)


해당 테이블 참조를 3개를 참조해서 가져오는건데...
3개다 각각 인덱스 다 잘타고...

다만... 각 테이블 레코드수가 많긴한데.. 2천만건정도...
그중 뽑아올 레코드는 약 200만~300만 레코드...(최대)
(근대 200만건이 많아서 안댄다 그러면....ㅠ)

문제는 레코드수가 많다고 처리속도가 늦는건 DB구조상 인덱스를 잘 타는데 저정도로 느릴수 있나요.. 이걸 개선하려면 어케 해야하나요..

액세스 플랜도 깔끔하니 잘나오고.. 조인도 최소로 조인시켜서 코스트 높게 안잡히는데.... 전체레코드수때문일까요...
범위형 조건이 많긴 한데.. 인덱스 다 타구요... 다만, 범위를 진짜 타이트하게 잡아서 출력레코드를 100만건 이하로 줄이면 1초만에 뽑히는 걸로 보아.. 레코드수 문제가 맞는거 같기도 하고...

DB전문가의 손길을 요합니다...
(진짜 하다하다 안대서.. 여기에 올려봅니다..IBM DB2 메뉴얼 다뒤져가면서 하는중 ㅠ)

 

 

  LOUPOS 2013-10-04 18:17:47  
액세스플렌 이미지 캡쳐 포함시켰습니다...

의심스러운 것은 토드에서 쿼리 수행시에 최초 100만레코드는 3초 정도만에 긁어 오는데 여기서부터 퍼포먼스가 쫙 떨어지면서
150만 레코드 부터는 1000레코드 긁어오는데 3초 이상씩 걸립니다...(동영상찍어서 올려야대나요..ㅋㅋ;;)

이거때문에 메모리나 CPU IO 부분 할당량이 적은가 했는데

메모리 32GB에 DB2 할당량 22GB정도 잡히고.. 실 사용율 CPU 5%도 안됩니다...
저거 다 쓰지도 못하면서 이러네요...(못긁겠으면 하드웨어 팍팍 쓰라고...ㅠ)

답변부탁드립니다 ㅠ
 
 
 
 
  pajama 2013-10-04 22:24:42  
안녕하세요? 실행하는 쿼리에 비해 Cost값이 너무 낮게 나오는것이 이상합니다. 
샘플DB에서 1만건 단순 조회만 해도 Cost값이 300정도 나옵니다.
각 테이블에 대해 통계정보갱신(RUNSTATS) 실행이 최근에 언제 되었는지 확인해보십시오.
 
 
 
 
  LOUPOS 2013-10-07 11:48:55  
으아...그러네요... 리오그 하고 범위설정을 다시했더니
최종적으로 300만 코스가....발생을...하아...

그리고 데이터레코드가 200만건이나 되는데 NL조인 할리가 없죠... 해쉬조인으로 바뀌었네요...
이거 개선 방법이 없을까요?

이곳저곳에서 자분을 구해봐도...
원천데이터(통계적 데이터가 아닌 스트링데이터) 를 불러오는데 그건 당연한거다 이러는데.. 이게 맞나요?
 
 
 
 
  pajama 2013-10-07 16:28:50  
해시조인 성능을 개선하려면 DB파라미터(sortheap, sheapthres) 설정값을 늘려주는 방법이 있습니다.

 

 

115500.png
0.05MB
728x90

+ Recent posts