열 기반 엔진 개요

문서 버전을 선택합니다.

이 페이지에서는 AlloyDB Omni 열 기반 엔진을 설명하고 컨테이너 및 Kubernetes 클러스터 설치에서 엔진을 사용하는 방법을 안내합니다. 이 페이지에서는 사용자가 PostgreSQL에 익숙하다고 가정합니다.

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 인스턴스에서 열 기반 엔진을 사용하려면 다음의 개략적인 단계를 실행합니다.

  1. 인스턴스에서 엔진을 사용 설정합니다.

    엔진을 사용 설정하는 것은 일회성 작업이며 데이터베이스를 다시 시작해야 합니다.

  2. 열 저장소에 열을 추가합니다.

    열 저장소에 열을 추가하려면 다음 방법 중 하나를 사용합니다.

  3. 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가 높습니다.

다음 단계