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 쿼리에서 열 기반 엔진의 사용을 확인할 수 있습니다.
열 기반 엔진을 사용하는 방법에 대한 자세한 내용은 열 기반 엔진 구성을 참조하세요.
열 저장소에 추가할 수 있는 데이터
열 저장소에 열을 추가할 때 사용할 수 있는 데이터 유형과 데이터 소스에는 몇 가지 제한사항이 있습니다.
지원되는 데이터 유형
열 기반 엔진은 다음 내장 데이터 유형이 있는 열만 지원합니다.
arraybigintbooleanbyteachardatedecimaldouble precisionenumfloat4float8integerjsonjsonbnumericrealserialshortsmallinttexttimestampuuidvarchar
열 기반 엔진은 지원되지 않는 데이터 유형이 있는 열을 열 저장소에 수동으로 추가하려는 시도를 무시합니다.
지원되지 않는 데이터 소스
열 기반 엔진은 다음 속성이 데이터 소스인 테이블 또는 구체화된 뷰를 지원하지 않습니다.
리프가 아닌 파티션을 나눈 테이블
외래 테이블
행이 5,000개 미만인 테이블 또는 뷰
열 기반 엔진 제한사항
- 색인이 있는 열에 분석 쿼리를 실행하는 경우 AlloyDB Omni 옵티마이저는 행 저장소를 사용할 수 있습니다.
- 열 저장소에 수동으로 추가된 열은 자동으로 삭제되지 않습니다. 수동으로 추가된 열을 강제로 삭제하려면 인스턴스에서
google_columnar_engine_drop을 사용하세요. - 자동 열 지정은 쿼리 사용량에 따라 열을 동적으로 추가하고 삭제할 수 있습니다.
- 열 기반 엔진에서 지원되지 않는 데이터 유형도 있습니다. 지원되는 데이터 유형을 확인하려면 지원되는 데이터 유형을 참조하세요.
행을 자주 업데이트하면 열 기반 데이터가 무효화됩니다. 열 기반 저장소에서 테이블 또는 구체화된 뷰를 검증하려면 업데이트 빈도를 줄이거나 열 기반 엔진 새로고침을 더 자주 예약하면 됩니다.
g_columnar_relations에서invalid_block_count열과total_block_count열을 비교하여 테이블 또는 뷰에 영향을 미치는지 확인할 수 있습니다. 테이블 또는 뷰가 자주 변경되거나 변경량이 많은 경우invalid_block_count가 높습니다.