같은DB에서동일쿼리가성능차이가나는이유에대한설명... 0 2 827

by 보노보노 [SQL Query] [2018.07.02 23:20:06]


문득 내가 알고 있는 부분중 잘못된 부분이 있나하는생각에글을올려봅니다.

하나의 배치프로그램이있습니다.(디비는 오라클)

이 배치가동일한대상건을처리하는데 10분이걸립니다. 근데 다른 무거운배치(db사용욜이 매우 높고 통쿼리구조)가 돌때는 약간과장해서 20분 30분이 돈다고칩시다.

이상황을 설명하는것에서 내가 아는바로는 배치가 최초 실행되어 db로세션을 생성할때 공유영역의자원을할당하는부분(명칭이기억이..)이 있다고알고있습니다.

만약 배치가 이 공유영역에 보통 10을 할당받이서 배치를 돌리고 처리를 하는데, db의 사용율이 높아서 공간이충분하지 않을경우 이공간을 5나 그 이하로 할당을 하기 때문에 느려진다?라고 알고 있습니다. 이때문에 동일한 배치도 db사용율이 높을때 들어가면메모리영역을 조금만할당받아 처리성능이나빠지고 db사용율이 낮을때는정상처리속도가 나오고요. 내가알고 있는것중에 잘못된부분이 있거나 더 구체적으로 설명이가능하신분은 알려주시면 감사하겠습니다. 문득이리 저리 떠들고 다니다 생각해보니 내가 틀릴수도 있을것 같다는 생각이 들어서요.

 

by 우리집아찌 [2018.07.03 09:09:54]

DB 서버의 성능이 동일한건지 서버도 성능차이가 있는데 응답속도가 느리다든지 설명 필요할듯한데요.

DB 서버가 완전 동일한경우 통계정보가 양쪽이 틀려서 옵티마이저가 다른 실행계획을 세우는게 제일 큰이유라 생각되네요.

서버간의 성능차이가 있다면 서버에 맞게 튜닝하는게 맞지 않을까합니다.

튜닝은 튜너에게 맞기시면 됩니다. ㅡ,.ㅡ


by 열심열심 [2018.07.03 09:38:58]

복잡하겠죠 시간대 마다 io wait 이 다를수도 있고 디비 버퍼 캐시에 얼마나 존재 하느냐에 따라 차이도 클 것 같구요

배치고 자주 하는게 아니라면 여기 배운대로는  buffer_pool recycle 주시고 자주쓰이는거라면 keep 주시면 차이가 덜 날 것 같네요. 

이건 각종 캐시 히트율과 wait 이벤트 살펴봐야 확실히 원인 나올 것 같네요. 

배치가 시스템 한도 이상의 대량의 dml문 발생시키거나 대량의 통계자료를 뽑는 것일 수도 있구요. 

alert로그도 한번 보시기 바랍니다. 

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입