AlloyDB Omni 열 기반 엔진은 다음 구성요소를 제공하여 스캔, 조인, 집계의 SQL 쿼리 처리 속도를 높입니다.
선택한 열의 테이블 및 구체화된 뷰 데이터를 포함하는 열 저장소이며, 열 중심 형식으로 재구성됩니다.
쿼리에서 열 저장소 사용을 지원하는 열 기반 쿼리 플래너 및 실행 엔진입니다.
기본 인스턴스, 읽기 풀 인스턴스 또는 둘 다에서 열 기반 엔진을 사용할 수 있습니다. 자동 열 지정을 사용하여 워크로드를 분석하고 성능 향상을 가장 많이 제공하는 열로 열 저장소를 자동으로 채울 수도 있습니다.
특정 쿼리와 함께 열 기반 엔진을 사용하려면 조인, 스캔 등 쿼리에서 참조되는 모든 열이 열 저장소에 있어야 합니다.
기본적으로 열 기반 엔진은 인스턴스의 메모리 1GB를 사용하도록 설정되어 있습니다. 워크로드, 메모리 사용량, 읽기 풀 구성 여부에 따라 기본 인스턴스에서 열 기반 엔진 메모리 할당을 줄이고 읽기 풀 인스턴스에 더 많은 메모리를 할당할 수 있습니다.
열 기반 엔진의 메모리 사용량을 확인하고 모니터링하려면 열 저장소 메모리 사용량 보기를 참조하세요. 열 저장소에서 사용하는 메모리 크기를 수정하려면 열 저장소 크기 구성을 참조하세요. 인스턴스에 권장되는 열 기반 엔진 메모리 크기를 확인하려면 열 저장소 메모리 크기 추천을 참조하세요.
열 기반 엔진의 이점을 활용하는 쿼리 유형
특정 쿼리는 열 기반 엔진의 이점을 누릴 수 있습니다. 다음은 열 기반 엔진의 이점을 가장 많이 누릴 수 있는 작업과 쿼리 패턴의 목록입니다.
작업 | 쿼리 패턴 |
---|---|
테이블 스캔 | WHERE 절과 같은 선택적 필터더 큰 테이블 또는 구체화된 뷰의 일부 열 LIKE , SUBSTR , TRIM 과 같은 표현식 |
집계 함수 | SUM , MIN , MAX , AVG , COUNT 와 같은 표현만 사용합니다.열 기반 스캔의 쿼리 시작 시 열별로 그룹화되지 않았거나 그룹화되었습니다. |
ORDER-BY |
연산자가 열 기반 스캔의 쿼리 시작 부분에 있는 경우에만 |
SORT |
연산자가 열 기반 스캔 쿼리의 시작 부분에 있고 테이블 또는 구체화된 뷰의 기본 열에 대해서만 정렬하는 경우에만 |
LIMIT |
연산자가 열 기반 스캔의 쿼리 시작 부분에 있고 SORT 또는 GROUP BY 연산자 앞에 있는 경우에만 |
INNER HASH JOIN |
사용된 키가 열이고 조인 한정자가 사용되지 않은 경우에만 |
선택적 조인 | 조인이 열 기반 스캔의 쿼리 시작 부분에 있는 경우에만 |
열 기반 엔진에 가장 적합한 쿼리, 쿼리에서 열 기반 엔진이 사용되었는지 여부, 사용된 방식에 대한 자세한 내용은 EXPLAIN
을 사용하여 열 기반 엔진 사용량 확인을 참조하세요.
AlloyDB Omni 인스턴스에서 열 기반 엔진을 사용하는 방법
AlloyDB Omni 인스턴스에서 열 기반 엔진을 사용하려면 다음의 개략적인 단계를 실행합니다.
인스턴스에서 엔진을 사용 설정합니다.
엔진을 사용 설정하는 것은 일회성 작업이며 데이터베이스를 다시 시작해야 합니다.
열 저장소에 열을 추가합니다.
열 저장소에 열을 추가하려면 다음 방법 중 하나를 사용합니다.
워크로드를 분석하고 열을 자동으로 추가하는 자동 열 지정을 사용합니다.
인스턴스의 데이터베이스에 있는 워크로드에 대한 지식을 바탕으로 열을 수동으로 추가합니다.
g_columnar_relations
뷰를 사용하여 열 저장소에 있는 항목을 추적할 수 있으며, 열이 추가된 후에는EXPLAIN
문을 사용하여 SQL 쿼리에서 열 기반 엔진의 사용을 확인할 수 있습니다.
열 기반 엔진을 사용하는 방법에 대한 자세한 내용은 열 기반 엔진 구성을 참조하세요.
열 저장소에 추가할 수 있는 데이터
열 저장소에 열을 추가할 때 사용할 수 있는 데이터 유형과 데이터 소스에는 몇 가지 제한사항이 있습니다.
지원되는 데이터 유형
열 기반 엔진은 다음 내장 데이터 유형이 있는 열만 지원합니다.
array
bigint
boolean
bytea
char
date
decimal
double precision
enum
float4
float8
integer
json
jsonb
numeric
real
serial
short
smallint
text
timestamp
uuid
varchar
열 기반 엔진은 지원되지 않는 데이터 유형이 있는 열을 열 저장소에 수동으로 추가하려는 시도를 무시합니다.
지원되지 않는 데이터 소스
열 기반 엔진은 다음 속성이 데이터 소스인 테이블 또는 구체화된 뷰를 지원하지 않습니다.
리프가 아닌 파티션을 나눈 테이블
외래 테이블
행이 5,000개 미만인 테이블 또는 뷰
열 기반 엔진 제한사항
- 색인이 있는 열에 분석 쿼리를 실행하는 경우 AlloyDB Omni 옵티마이저는 행 저장소를 사용할 수 있습니다.
- 열 저장소에 수동으로 추가된 열은 자동으로 삭제되지 않습니다. 수동으로 추가된 열을 강제로 삭제하려면 인스턴스에서
google_columnar_engine_drop
을 사용하세요. - 자동 열 지정은 쿼리 사용량에 따라 열을 동적으로 추가하고 삭제할 수 있습니다.
- 열 기반 엔진에서 지원되지 않는 데이터 유형도 있습니다. 지원되는 데이터 유형을 확인하려면 지원되는 데이터 유형을 참조하세요.
행을 자주 업데이트하면 열 기반 데이터가 무효화됩니다. 열 기반 저장소에서 테이블 또는 구체화된 뷰를 검증하려면 업데이트 빈도를 줄이거나 열 기반 엔진 새로고침을 더 자주 예약하면 됩니다.
g_columnar_relations
에서invalid_block_count
열과total_block_count
열을 비교하여 테이블 또는 뷰에 영향을 미치는지 확인할 수 있습니다. 테이블 또는 뷰가 자주 변경되거나 변경량이 많은 경우invalid_block_count
가 높습니다.