Post

<오라클 성능 고도화 원리와 해법1> Ch05-04 Array Processing 활용

오라클 성능 고도화 원리와 해법1 - Ch05-04 Array Processing 활용

Array Processing 기능을 활용하면 한 번의 SQL 수행으로 다량의 로우를 동시에 insert/update/delete 할 수 있다. 이는 네트워크를 통한 데이터베이스 Call을 감소시켜 주고, 궁극적으로 SQL 수행시간과 CPU 사용량을 획기적으로 줄여준다.

아래 표는 앞절에서 수행한 3가지 테스트와 방금 확인한 Array Processing 결과를 쉽게 비교할 수 있도록 정리한 것이다. 네트워크를 경유해 발생하는 데이터베이스 Call이 얼마만큼 심각한 성능 부하를 일으키는지 알 수 있다. 그뿐만 아니라 One-SQL로 통합하지 않더라도 Array Processing 만으로 그에 버금가는 성능 개선 효과를 얻을 수 있음을 잘 보여준다.

Array Processing의 효과를 극대화하려면 연속된 일련의 처리 과정이 모두 Array 단위로 진행돼야 한다. 이를 테면, 앞선 단계에서 Array 단위로 수천 건씩 아무리 빠르게 Fetch하더라도 다음 단계에서 수행할 insert가 건건이 처리된다면 그 효과가 크게 반감되며, 반대의 경우도 마찬가지다. 이것은 병렬 프로세싱에서 ‘병렬로부터 직렬(P->S)’ 또는 ‘직렬로부터 병렬(S->P)’로 처리되는 부분이 병목을 일으키는 것과 같은 이치다.

참고로, EXP, IMP 명령을 통해 데이터를 Export, Import 할 때도 내부적으로 Array Processing이 활용되며, 그만큼 대용량 데이터를 처리하는데 있어 Array Processing은 필수적인 요소다. Array Processing을 지원하는 인터페이스가 프로그램 언어별로 각기 다르므로 API를 통해 확인하고 이를 잘 활용해서 성능 개선 효과가 얼마나 극적인지 직접 확인해보기 바란다.

This post is licensed under CC BY 4.0 by the author.