데이타베이스 Stored Procedure 성능 관련..
글쓴이: argonne / 작성시간: 목, 2011/08/18 - 8:00오후
안녕하세요, DB 초보 프로그래머입니다.
현재 DB2를 이용하여 Stored procedure 개발 중인데 기존 프로그램을 분석하고 성능 향상을 위해서 작업을 해야 되는데 어떤 부분부터 시작해야 막막해서요..
기존 코드의 대략적인 형태는 다음과 같습니다.
1) 하나의 Stored Procedure내에 대략 16개의 Cursor를 사용하고 있습니다.
2) Stored procedure가 엄청난 라인으로 구성되어 있습니다. 5천라인이 넘게 작성되어 있네요.. ㅠㅠ
그런데 대부분의 코드 내용은 if-else로 구성되고 있고 각 컨디션내에서 수행되는 작업은 또 엄청나게 길게 작성되어 있습니다.
예를 들면,
if (condition A) { if (condition A-1) { if (condition A-1-a) { ... } else if (condition A-1-b) { ... } ... } else if (condition A-2) { ... } ... } else if (condition B) { ...} }
다행이 특이한 점은 condition A에서의 전체 작업은 condition B에서의 전체 작업과 유사한 형태로 로직이 구성되어 있습니다.
다른 부분도 마찬가지구요. 예를 들며, condition A-1, condtion A-2, condition A-3.. 등이 내부적으로 약간만 틀리고 유사한 로직들로 구성되어 있습니다.
Codition B-1, condition B-2, .. 등도 약간만 틀리고 수행되는 작업은 유사하구요..
너무 대략적으로 설명드린 것 같긴 하지만 원론적인 성능 향상 방법부터 구체적인 향상 방법까지 아시는 내용 공유해주시면 많은 도움이 될 것 같습니다.
그럼 ~~~~
Forums:
커서 사용을 적절히 줄이세요.
저장 procedure 5천 줄이라니....
일반적으론 커서를 줄이는 것만으로도 성능 향상이
1.
일반적으론 커서를 줄이는 것만으로도 성능 향상이 됩니다.
1% 정도의 예외는 있습니다만.
커서를 없애는 방향으로 고쳐보시죠.
2.
condition A-1, condtion A-2, condition A-3.. 등이 내부적으로 약간만 틀리고 유사한 로직들이라고 하셨는데...
동적 SQL문을 사용하는 것도 고려해보시죠. 코드가 상당히 짧아질 겁니다.
원하지 않는 코드가 실행될 가능성 때문에 저도 동적 SQL문은 선호하지 않습니다만,
유효적절하게 쓴다면 좋은 방법입니다.
아니면 비슷한 로직을 따로 모아 별도의 프로시저를 만들고 이를 호출하게끔 하는 것도 좋을 것 같습니다.
----
academic은 제 고등학교 때 동아리 이름입니다.
academic, 아주 가끔은 저도 이랬으면 좋겠습니다.
댓글 달기