Refigo Blog

<오라클 성능 고도화 원리와 해법2> Ch05-06 Sort Area를 적게 사용하도록 SQL 작성

오라클 성능 고도화 원리와 해법2 - Ch05-06 Sort Area를 적게 사용하도록 SQL 작성 소트 연산이 불가피하다면 메모리 내에서 처리를 완료할 수 있도록 노력해야 한다. Sort Area 크기를 늘리는 방법도 있지만, 그전에 Sort Area를 적게 사용하는 방법부터 찾는 것이 순서다. (1) 소트를 완료하고 나서 데이터 가공하기 특정...

<오라클 성능 고도화 원리와 해법2> Ch05-05 인덱스를 이용한 소트 연산 대체

오라클 성능 고도화 원리와 해법2 - Ch05-05 인덱스를 이용한 소트 연산 대체 인덱스는 항상 키 컬럼 순으로 정렬된 상태를 유지하므로 이를 이용해 소트 오퍼레이션을 생략할 수 있다. 소트 머지 조인에서 Outer 테이블 조인 컬럼에 인덱스가 있을 때 sort join 오퍼레이션을 생략하는 경우를 2장에서 이미 살펴보았다. 서브쿼리에 사용된 테...

<오라클 성능 고도화 원리와 해법2> Ch05-04 소트가 발생하지 않도록 SQL 작성

오라클 성능 고도화 원리와 해법2 - Ch05-04 소트가 발생하지 않도록 SQL 작성 데이터 모델 측면에서는 이상이 없는데, 불필요한 소트가 발생하도록 SQL을 작성하는 경우가 있다. 예를 들어, 아래처럼 UNION을 사용하면 옵티마이저는 상단과 하단의 두 집합 간 중복을 제거하려고 SORT UNIQUE 연산을 수행한다. 하지만 PK 컬럼인 ...

<오라클 성능 고도화 원리와 해법2> Ch05-03 데이터 모델 측면에서의 검토

오라클 성능 고도화 원리와 해법2 - Ch05-03 데이터 모델 측면에서의 검토 불합리한 데이터 모델이 소트 오퍼레이션을 유발하는 경우를 흔히 접할 수 있다. 튜닝 과정에서 조사된 SQL에 group by, union, distinct 같은 연산자가 불필요하게 많이 사용되는 패턴을 보인다면 대개 데이터 모델이 잘 정규화되지 않았음을 암시한다. 데이터...

<오라클 성능 고도화 원리와 해법2> Ch05-02 소트를 발생시키는 오퍼레이션

오라클 성능 고도화 원리와 해법2 - Ch05-02 소트를 발생시키는 오퍼레이션 (1) Sort Aggregate sort aggregate는 전체로우를 대상으로 집계를 수행할 때 나타나는데, ‘sort’라는 표현을 사용하지만 실제 소트가 발생하지는 않는다. (2) Sort Order By 데이터 정렬을 위해 order by 오퍼레이션을 수...

<오라클 성능 고도화 원리와 해법2> Ch05-01 소트 수행 원리

SQL 튜닝에서 빠질 수 없는 요소가 소트 튜닝이다. 소트 오퍼레이션은 수행 과정에서 CPU와 메모리를 많이 사용하고, 데이터량이 많을 때는 디스크 I/O까지 일으킨다. 많은 서버 리소스를 사용하는 것도 문제지만 부분범위 처리를 불가능하게 해 OLTP 환경에서 애플리케이션 성능을 저하시키는 주요인으로 작용하기도 한다. 오라클 성능 고도화 원리와 해법...

<오라클 성능 고도화 원리와 해법2> Ch04-11 집합 연산을 조인으로 변환

오라클 성능 고도화 원리와 해법2 - Ch04-11 집합 연산을 조인으로 변환 Intersect나 Minus 같은 집합 연산을 조인 형태로 변환하는 것을 말한다. 각각 Sort Unique 연산을 수행한 후에 Minus 연산을 수행하는 것을 볼 수 있다. 해시 Anti 조인을 수행한 후에 중복값을 제거하기 위한 Hash Unique 연산을 수행하...

<오라클 성능 고도화 원리와 해법2> Ch04-10 실체화 뷰 쿼리로 재작성

오라클 성능 고도화 원리와 해법2 - Ch04-10 실체화 뷰 쿼리로 재작성 일반적인 뷰는 주로 하나 또는 그 이상의 테이블에 기초하여 논리적으로 정의한 테이블로서, ‘저장된 쿼리’ 또는 가상의 테이블이라고 불린다. 테이블이 사용될 수 있는 대부분 위치에 뷰를 사용할 수 있고, 뷰에 기초해 또 다른 뷰를 생성할 수도 있다. 정의에서도 알 수 있듯이...

<오라클 성능 고도화 원리와 해법2> Ch04-09 Outer 조인을 Inner 조인으로 변환

오라클 성능 고도화 원리와 해법2 - Ch04-09 Outer 조인을 Inner 조인으로 변환 Outer 조인을 작성할 때 일부 조건절에 Outer 기호(+)를 빠뜨리면 Inner 조인할 때와 같은 결과가 나온다. 이럴 때 옵티마이저는 Outer 조인을 Inner 조인으로 바꾸는 쿼리 변환을 실행한다. 옵티마이저가 이러한 쿼리 변환을 하는 이유는 ...