AlloyDB 열 기반 엔진 정보

이 페이지에서는 PostgreSQL용 AlloyDB에서 제공하는 열 엔진을 간략하게 설명하고 사용 방법을 보여줍니다.

AlloyDB 열 기반 엔진은 다음 구성요소를 제공하여 스캔, 조인, 집계의 SQL 쿼리 처리 속도를 높입니다.

  • 선택한 열의 테이블 및 materialized-view 데이터가 열 중심 형식으로 재구성된 열 스토어입니다.

  • 쿼리에서 열 스토어 사용을 지원하는 열 형식 쿼리 계획자 및 실행 엔진입니다.

열 엔진은 기본 인스턴스, 읽기 풀 인스턴스 또는 둘 다에서 사용할 수 있습니다. 자동 열 정렬을 사용하여 워크로드를 분석하고 열 스토어에 최적의 성능 향상을 제공하는 열을 자동으로 채울 수도 있습니다.

특정 쿼리에서 열 기반 엔진을 사용하려면 조인 및 스캔과 같은 해당 쿼리 프래그먼트의 모든 열이 열 스토어에 있어야 합니다.

기본적으로 열 엔진은 인스턴스 메모리의 30% 를 사용하도록 설정됩니다. 워크로드, 메모리 사용량, 읽기 풀이 구성되어 있는지에 따라 기본 인스턴스의 열 엔진 메모리 할당을 줄이고 읽기 풀 인스턴스에 더 많은 메모리를 할당할 수 있습니다. 열 엔진별 메모리 사용량을 보고 모니터링하려면 열 스토어 메모리 사용량 보기를 참고하세요. 열 스토어에서 사용하는 메모리 크기를 수정하려면 열 스토어 크기 구성을 참고하세요. 인스턴스에 권장되는 열 기반 엔진 메모리 크기를 찾으려면 열 스토어 메모리 크기 추천을 참고하세요.

열 기반 엔진의 이점을 활용하는 쿼리 유형

특정 쿼리는 열 기반 엔진의 이점을 누릴 수 있습니다. 다음은 열 엔진의 이점을 가장 많이 누리는 작업 및 쿼리 패턴 목록입니다.

  • 테이블 스캔

    • WHERE 절과 같은 선택적 필터가 있습니다.
    • 더 큰 테이블 또는 구체화된 뷰의 열을 소수만 사용합니다.
    • LIKE, SUBSTR, `TRIM과 같은 표현식을 사용합니다.
  • 집계 함수

    • SUM, MIN, MAX, AVG, COUNT 표현식만 사용합니다.
    • 열 스캔 쿼리의 시작 부분에 있습니다.
    • 그룹화되지 않았거나 열별로 그룹화되어 있습니다.
  • ORDER-BYSORT: ORDER-BY 또는 SORT가 열 엔진에서 액세스한 열의 스캔 결과에 있는 경우에만 사용

  • LIMIT: 연산자가 열 스캔 쿼리의 시작 부분에 있고 SORT 또는 GROUP BY 연산자 앞에 있는 경우에만 적용됩니다.

  • 사용된 키가 열이고 조인 한정자가 사용되지 않는 경우에만 INNER HASH JOIN

  • 조인이 열 스캔의 쿼리 시작 부분에 있는 경우에만 선택적 조인

열 형식 엔진과 가장 잘 호환되는 쿼리, 쿼리에서 열 형식 엔진이 사용되었는지 여부, 사용 방법에 관한 자세한 내용은 EXPLAIN를 사용하여 열 형식 엔진 사용 확인을 참고하세요.

열 형식 엔진 사용 방법

AlloyDB 인스턴스에서 열 기반 엔진을 사용하려면 다음과 같은 대략적인 단계를 따르세요.

  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
  • timestamptz
  • uuid
  • varchar

열 엔진은 지원되지 않는 데이터 유형이 있는 열을 열 스토어에 수동으로 추가하려는 시도를 무시합니다.

지원되지 않는 데이터 소스

열 엔진은 다음 속성을 데이터 소스로 사용하는 테이블 또는 구체화된 뷰를 지원하지 않습니다.

  • 리프가 아닌 파티션을 나눈 테이블

  • 외부 테이블

  • 행 수가 5,000개 미만인 테이블 또는 뷰

열 기반 엔진 제한사항

  • 색인이 있는 열에 대해 분석 쿼리를 실행하는 경우 AlloyDB 최적화 도구가 행 저장소를 사용할 수 있습니다.
  • 열 스토어에 수동으로 추가된 열은 자동으로 삭제되지 않습니다. 수동으로 추가된 열을 강제로 삭제하려면 인스턴스에서 google_columnar_engine_drop()를 사용하세요.
  • 자동 열 정렬은 쿼리 사용량에 따라 열을 동적으로 추가하고 삭제할 수 있습니다.
  • 열 엔진에서 지원하는 데이터 유형은 일부입니다. 지원되는 데이터 유형을 보려면 지원되는 데이터 유형을 참고하세요.
  • 행을 자주 업데이트하면 열 데이터가 무효화됩니다. 열 스토어에서 테이블 또는 구체화된 뷰의 유효성을 검사하려면 업데이트 빈도를 줄이거나 열 엔진 새로고침을 더 자주 예약하면 됩니다.

    g_columnar_relationsinvalid_block_counttotal_block_count 열을 비교하여 표 또는 보기가 영향을 받는지 확인할 수 있습니다. 테이블 또는 뷰가 자주 변경되거나 변경되는 양이 많으면 invalid_block_count가 높습니다.

다음 단계