본문 바로가기

스터디/오라클 성능고도화 원리와 해법141

05.데이터베이스 Call 최소화 원리 - 04.Array Processing 활용 Array Processing기능을 활용하면 한 번의 SQL 수행으로 다량의 로우를 동시에 insert/update/delete할 수 있습니다. 이는 네트워크를 통한 데이터베이스 Call을 감소시켜주고, 궁극적으로 SQL수행시간과 CPU 사용량을 획기적으로 줄여줍니다. (앞 절의 납입방법별_월요금집계 테이블 응용) Java 프로그램에서 Array Processing 이 10 과 1000일때 수행시간과 insert 할때 Execute Call을 비교해보겠습니다. 10일때 - 126.82초 , insert 시 150000번의 Execute Call 발생 1000일때 - 1.21초, insert 시 30번의 Execute Call 발생 inesert 된 로우 수가 150,000건이므로 매번 5,000건씩 Ar.. 2020. 1. 29.
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.