본문 바로가기

아케텍쳐14

05.데이터베이스 Call 최소화 원리 - 03. 데이터베이스 Call이 성능에 미치는 영향 월요금납부실적 테이블과 납입방법별_월요금집계 테이블이 있습니다. 월요금납부실적테이블은 고객별 납입방법별 납입요금을 컬럼 값으로 입력하고, 납입방법별_월요금집계 테이블은 납입요금을 납입방법코드별로 하나의 레코드로 입력하도록 하고 있습니다. 여기서 월요금납부실적 테이블을 이용해 납입방법별_월요금집계 테이블형태로 가공하는 배치프로그램이 필요하다고 가정하고 아래와 같이 PL/SQL을 작성하였습니다.위의 쿼리의 문제는 과도한 데이터베이스 Call에 있습니다. 만약 처리해야 할 월요금납부실적이 100만 건이면 이 테이블에 대한 Fetch Call이 100만건, 납입방법별_월요금집계 테이블로의 insert를 위한 Execute Call이 최대 500만번, 따라서 최대 600만번의 데이터베이스 Call이 발생하게 됩니.. 2020. 1. 28.
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.