Aurora DSQL EXPLAIN 계획 작업
Aurora DSQL은 PostgreSQL과 유사한 EXPLAIN 계획 구조를 사용하지만 분산 아키텍처 및 실행 모델을 반영하는 키가 추가되었습니다.
이 설명서에서는 Aurora DSQL EXPLAIN 계획에 대한 개요를 제공하여 PostgreSQL과 비교한 유사성과 차이점을 강조합니다. Aurora DSQL에서 사용할 수 있는 다양한 유형의 스캔 작업을 다루고 쿼리 실행 비용을 이해하는 데 도움이 됩니다.
PostgreSQL VS Aurora DSQL EXPLAIN 계획
Aurora DSQL은 PostgreSQL 데이터베이스를 기반으로 구축되었으며 대부분의 계획 구조를 PostgreSQL과 공유하지만 쿼리 실행 및 최적화에 영향을 미치는 주요 아키텍처 차이점이 있습니다.
| 기능 | PostgreSQL | Aurora DSQL |
|---|---|---|
|
데이터 저장 |
힙 스토리지 |
힙 없음, 모든 행이 고유 식별자로 인덱싱됨 |
|
기본 키 |
프라이머리 키 인덱스는 테이블 데이터와 별개임 |
프라이머리 키 인덱스는 모든 추가 열을 INCLUDE 열로 포함하는 테이블 |
|
보조 인덱스 |
표준 보조 인덱스 |
키가 아닌 열을 포함할 수 있는 기능으로 PostgreSQL과 동일하게 작업 |
|
필터링 기능 |
인덱스 조건, 힙 필터 |
인덱스 조건, 스토리지 필터, 쿼리 프로세서 필터 |
|
스캔 유형 |
순차 스캔, 인덱스 스캔, 인덱스 전용 스캔 |
전체 스캔, 인덱스 전용 스캔, 인덱스 스캔 |
|
쿼리 실행 |
데이터베이스에 로컬 |
분산(컴퓨팅 및 스토리지는 별도) |
Aurora DSQL은 테이블 데이터를 별도의 힙이 아닌 프라이머리 키 순서로 직접 저장합니다. 각 행은 일반적으로 프라이머리 키인 고유 키로 식별되므로 데이터베이스가 조회를 보다 효율적으로 최적화할 수 있습니다. 아키텍처 차이는 PostgreSQL이 인덱스 전용 스캔을 자주 사용하는 이유를 설명합니다.
또 다른 주요 차이점은 Aurora DSQL이 컴퓨팅을 스토리지와 분리하여 실행 경로의 앞부분에서 필터를 적용하여 데이터 이동을 줄이고 성능을 개선할 수 있다는 것입니다.
PostgreSQL에서 EXPLAIN 계획을 사용하는 방법에 대한 자세한 내용은 PostgreSQL EXPLAIN 설명서
Aurora DSQL EXPLAIN 계획의 주요 요소
Aurora DSQL EXPLAIN 계획은 필터링이 발생하는 위치 및 스토리지에서 검색되는 열을 포함하여 쿼리가 실행되는 방법에 대한 자세한 정보를 제공합니다. 이 출력을 이해하면 쿼리 성능을 최적화하는 데 도움이 됩니다.
- 인덱스 조건
인덱스를 탐색하는 데 사용되는 조건입니다. 스캔되는 데이터를 줄이는 가장 효율적인 필터링입니다. Aurora DSQL에서는 실행 계획의 여러 계층에 인덱스 조건을 적용할 수 있습니다.
- 프로젝션
스토리지에서 검색된 열입니다. 프로젝션이 적을수록 성능이 향상됩니다.
- 스토리지 필터
스토리지 수준에서 적용되는 조건입니다. 쿼리 프로세서 필터보다 더 효율적입니다.
- 쿼리 프로세서 필터
-
쿼리 프로세서 수준에서 적용되는 조건입니다. 필터링하기 전에 모든 데이터를 전송해야 하므로 데이터 이동과 처리 오버헤드가 증가합니다.
Aurora DSQL의 필터
Aurora DSQL은 컴퓨팅을 스토리지와 분리하므로 쿼리 실행 중에 필터가 적용되는 지점이 성능에 상당한 영향을 미칩니다. 대량의 데이터가 전송되기 전에 적용되는 필터는 지연 시간을 줄이고 효율성을 개선합니다. 필터가 적용되기 전에는 처리, 이동 및 스캔해야 하는 데이터가 적을수록 쿼리 속도가 빨라집니다.
Aurora DSQL은 쿼리 경로의 여러 단계에서 필터를 적용할 수 있습니다. 이러한 단계를 이해하는 것은 쿼리 계획을 해석하고 성능을 최적화하는 데 중요합니다.
| 수준 | 필터 유형 | 설명 |
|---|---|---|
| 1 | 인덱스 조건 |
인덱스를 스캔하는 동안 적용됩니다. 스토리지에서 읽는 데이터의 양을 제한하고 컴퓨팅 계층으로 전송되는 데이터를 줄입니다. |
| 2 | 스토리지 필터 | 스토리지에서 데이터를 읽은 후 컴퓨팅으로 전송하기 전에 적용됩니다. 다음은 인덱스의 포함 열에 대한 필터의 예입니다. 데이터 전송은 줄이지만 읽기 양은 줄이지 않습니다. |
| 3 | 쿼리 프로세서 필터 | 데이터가 컴퓨팅 계층에 도달한 후 적용됩니다. 모든 데이터를 먼저 전송해야 하므로 지연 시간과 비용이 증가합니다. 현재 Aurora DSQL은 스토리지에서 모든 필터링 및 프로젝션 작업을 수행할 수 없으므로, 일부 쿼리는 이러한 유형의 필터링으로 강제로 폴백될 수 있습니다. |