성능고도화54 05.데이터베이스 Call 최소화 원리 - 02.User Call vs. Recursive Call 앞에서는 데이터베이스 Call을 커서의 활동상태에 따라 Parse,Execute,Fetch로 나누었는데, Call이 어디에서 발생하느냐에 따라 User Call과 Recursive Call로 나눌 수도 있습니다. SQL트레이스 파일을 tkprof유틸리티로 포맷하면 아래쪽에 overall total통계를 볼 수 있습니다. non-recursive 통계가 user call이고 recursive 통계가 recursive call입니다. User Call은 OCI(Oracle Call Interface)를 통해 오라클 외부로 들어오는 Call을 말합니다. 동시접속자 수가 적을때는 잘 드러나지 않지만 Peak시간대에 시스템 장애를 발생시키는 주범이기도 합니다. User Call이 많이 개발되도록 개발된 애플리케이.. 2020. 1. 22. 05.데이터베이스 Call 최소화 원리 - 01.Call 통계 이번 챕터에서는 Parse Call을 제외하고 SQL수행 중에 발생하는 Execute Call,Fetch Call을 줄이는 방법에 대해서 설명하고, 데이터베이스 Call을 User Call과 Recursive Call로 나누어 각각을 최소화하는 원리와 방안에 대해서도 집중적으로 설명합니다. DBA의 관리적명령어이든 사용자로부터의 데이터 조작 명령어든 모두 데이터베이스 Call을 통해 서버 프로세스에 전달되며, 불필요하고 반복적인 Call 수행횟수를 최소화하는 것은 데이터베이스 수행속도를 향상시키고 확장성을 높이는 중요하고 핵심적인 튜닝요소입니다. 아래는 sql trace 레포트에서 call 통계 부분만을 발췌한 것입니다.Parse Call은 커서를 파싱하는 과정에 대한 통계로써, 실행계획을 생성하거나 찾.. 2020. 1. 21. 04.라이브러리 캐시 최적화 원리 - 11.Static SQL 구현을 위한 기법들 Dynamic SQL을 자주사용하게되는 두번째 사례는 조건절에 IN-LIST 항목이 가변적으로 변할때 입니다. 여기서 소개하는 사례들은 Dynamic SQL로 작성하더라도 생성될 수 있는 최대 SQL개수가 그다지 많지 않기 때문에 라이브러리 캐시에 그렇게 많은 부하를 주지는 않습니다. 문제는 이런저런 이유로 Dynamic SQL을 사용하는 순간 조건절 비교 값까지 습관적으로 literal 상수값을 사용하도록 개발한다는 데에 있습니다. 그런 뜻에서 꼭 필요한 경우가 아니라면 가급적 Static SQL로 작성하는 습관과 능력을 기를 수 있도록 몇 가지 사례를 소개하겠습니다. (1)IN-LIST항목이 가변적이지만 최대 경우 수가 적은 경우 Static 방식으로 3가지 회원을 선택하는 경우 7가지 SQL을 미리.. 2020. 1. 20. 04.라이브러리 캐시 최적화 원리 - 10. Dynamic SQL 사용 기준 (1)Dynamic SQL 사용에 관한 원칙 - Static SQL을 지언하는 개발환경이라면 Static SQL로 작성하는 것을 원칙으로 합니다. Static SQL은 Precompile 과정을 거치므로 런타임 시 안정적인 프로그램 build가 가능하다는 장점이 있습니다. 그리고 Dynamic SQL을 사용하면 애플리케이션 커서 캐싱기능이 작동하지 않는 경우가 있는데, 이 기능이 필요한 상황(예를 들면, 루프 내에서 반복 수해되는 쿼리)에서 Dynamic SQL을 사용하면 성능이 나빠지기 때문입니다. 아래의 경우에는 Dynamic SQL을 사용해도 무방합니다. - Precompille 과정에서 컴파일 에러가 나는 구문을 사용할 때, 예를 들어 Pro*C에서 스칼라 서브쿼리,분석함수,ANSI 조인 등 - .. 2020. 1. 19. 이전 1 ··· 5 6 7 8 9 10 11 ··· 14 다음