sql 레벨업 책

Tags:

반복계 vs 포장계(p165)

반복계의 단점

SQL 실행의 오버헤드

SQL을 실행 할 때는 데이터를 검색하거나 연산하는 실제의 SQL 처리 이외에도 다양한 처리가 이루어진다.

전처리

1) SQL 구문을 네트워크로 전송 2) 데이터베이스 연결 3) SQL 구문 파스(구문 분석) 4) SQL 구문의 실행 계획 생성 또는 평가

후처리 5) 결과 집합을 네트워크로 전송

(1),(5)는 SQL을 실행하는 애플리케이션과 데이터베이스가 물리적으로 같은 본체에 있다면 발생하지 않는다. 그러나 일정 규모 이상의 시스템은 분리해서 사용하기에 SQL 구문 또는 결과 집합을 네트워크로 전송해야한다. 그렇다고 해도 일반적으로 두 가지는 데이터센터 내부의 동일 LAN 위에 있으므로 전송 속도 자체는 고속(거의 밀리 초)인 만큼 오버헤드가 딱히 일어나지 않는다.

(2)는 데이터베이스에 SQL 구문을 실행하기 위한 작업이다. 일단 데이터베이스에 연결해서 세션을 설정해야 하므로 발생하는 처리이다. 하지만 최근에는 애플리케이션에서 미리 연결을 일정 수 확보해서 이런 오버헤드를 감소시키는 커넥션 풀(Connection Pool)이라는 기술을 사용해서 거의 문제되지 않는다.

오버헤드 중 가장 문제가 되는 것은 (3),(4). 파스는 DBMS마다 하는 방법이 미묘하게 다르고, 종류도 굉장히 많다. 오라클에는 하드파스 / 소프트 파스 두 가지가 있다. 하드 파스는 다양한 테이블에 SELECT 구문을 실행할 때 사용된다. 따라서 소프트 파스보다 오래 걸린다.

병렬 분산이 힘들다

반복계는 반복 1회마다의 처리를 굉장히 단순화한다. 따라서 리소스를 분산해서 병렬처리하는 최적화가 안된다. 데이터베이스 서버 저장소는 대부분 RAID 디스크로 구성되어 I/O 부하를 분산할 수 있게 되어있다. 하지만 반복계에서 실행하는 SQL 구문은 대부분 단순해서 1회의 SQL 구문이 접근하는 데이터양이 적다. 따라서 I/O를 병렬화하기 힘들다는 단점이 있다.

- 데이터베이스의 진화로 인한 혜택을 받을 수 없다