더북(TheBook)

03 | 병렬처리

병렬 처리란 하나의 작업을 처리하기 위해 동시에 여러 개의 프로세스를 띄워 분할해서 처리하는 것을 말한다. 데이터 처리량이 그다지 많지 않거나 작은 규모의 DB 서버를 운용할 때는 굳이 병렬로 처리할 필요가 없다. 그러나 현재 기업에서 사용하고 있는 대부분의 DB 서버는 용량도 크고 처리하는 데이터 양도 매우 많아 병렬로 수행한다면 매우 큰 성능 향상 효과를 볼 수 있다.

오라클에서도 SQL문을 병렬로 처리할 수 있는데, SQL문을 작성해 실행하면 내부적으로 오라클의옵티마이저가 해당 문장을 처리해 그 결과를 반환한다. 보통은 SQL문을 실행하면 하나의 프로세스가 이를 처리하는데 병렬로 처리하면 여러 개의 프로세스가 SQL문을 분석하고 실행해 데이터를 처리한 뒤 그 결과를 반환한다.

예를 들어 1번에서 10번까지 적힌 카드가 상자에 섞여 있는데 여러분이 카드를 모두 꺼내 번호순으로 나열해야 한다고 하자. 총 10장뿐이니 그리 어렵지 않게 처리할 수 있을 것이다. 하지만 만약 상자 속 카드가 100장이라면? 혼자서 처리하려면 시간도 오래 걸리고 짜증이 나서 작업 효율도 떨어질 것이다. 그런데 마침 친구 4명이 와서 카드 정렬 작업을 도와준다면 훨씬 빨리 작업을 마칠 수 있을 것이다. 상자는 오라클 DB, 카드는 데이터, 여러분과 친구들은 오라클 프로세스라고 생각하면 어떤 식으로 병렬 처리가 이루어지는지 감이 잡힐 것이다.

일반적으로 사용하는 병렬 처리 방법은 두 가지가 있는데, 하나는 병렬 쿼리이고 다른 하나는 병렬 DML이다. 쉽게 말해 전자는 SELECT문을, 후자는 INSERT, UPDATE, DELETE, MERGE문을 병렬로 처리하는 것을 의미한다. 그럼 지금부터 두 가지 병렬 처리 방법에 대해 알아 보자.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.