AlloyDB Omni에서 열 기반 엔진 구성

이 페이지에서는 AlloyDB Omni 데이터베이스 클러스터에서 열 기반 엔진을 사용 설정하거나 사용 중지하는 방법을 설명합니다. 또한 열 스토어에 적절한 초기 크기를 구성하는 방법도 설명합니다.

AlloyDB 열 기반 엔진의 개념적 개요는 AlloyDB Omni 열 기반 엔진 개요를 참고하세요.

열 기반 엔진 사용 설정

인스턴스에서 열 엔진을 사용하려면 인스턴스의 google_columnar_engine.enabled 플래그를 on로 설정합니다.

인스턴스에서 이 플래그를 설정하는 단계는 AlloyDB Omni를 컨테이너에서 실행하는지 또는 Kubernetes 클러스터에서 실행하는지에 따라 다릅니다.

단일 서버

google_columnar_engine.enabledon로 설정하려면 다음 단계를 따르세요.

  1. ALTER SYSTEM PostgreSQL 명령어를 실행합니다.

    ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
    
  2. 열 엔진의 구성을 조정하려면 데이터베이스 서버를 다시 시작하기 전에 다음 섹션의 안내를 따르세요. 그렇지 않으면 다음 단계를 완료하여 지금 데이터베이스 서버를 다시 시작합니다.

  3. 구성 매개변수 변경사항을 적용하려면 AlloyDB Omni으로 실행 중인 컨테이너를 다시 시작합니다.

    Docker

      sudo docker restart CONTAINER_NAME

    Podman

      sudo podman restart CONTAINER_NAME

Kubernetes

google_columnar_engine.enabled 플래그를 on로 설정하려면 데이터베이스 클러스터 매니페스트를 수정하여 primarySpec 섹션에 parameters 속성을 추가합니다.

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: CLUSTER_NAME
    spec:
      databaseVersion: "15.7.0"
      primarySpec:
        parameters:
          google_columnar_engine.enabled: "on"

CLUSTER_NAME을 데이터베이스 클러스터 이름으로 바꿉니다. 이는 데이터베이스 클러스터를 만들 때 선언한 데이터베이스 클러스터 이름과 동일합니다.

열 스토어 크기 구성

인스턴스에서 열 형식 엔진이 사용 설정된 동안 AlloyDB Omni는 인스턴스 메모리의 일부를 할당하여 열 형식 데이터를 저장합니다. 열 스토어에 고속 RAM을 할당하면 AlloyDB Omni가 열 형식 데이터에 최대한 빠르게 액세스할 수 있습니다.

메모리와 스토리지 캐시를 합하면 열 기반 엔진의 전체 용량을 나타냅니다.

메모리 구성

google_columnar_engine.memory_size_in_mb 플래그를 사용하여 할당을 고정 크기로 설정할 수 있습니다.

AlloyDB Omni의 열 스토어 메모리를 구성하는 단계는 AlloyDB Omni를 컨테이너에서 실행하는지 또는 Kubernetes 클러스터에서 실행하는지에 따라 다릅니다.

단일 서버

인스턴스에 google_columnar_engine.memory_size_in_mb 플래그를 설정하려면 다음을 실행합니다.

  1. ALTER SYSTEM PostgreSQL 명령어를 실행하여 메모리를 구성합니다.

    ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_MEMORY_SIZE;
    

    COLUMN_MEMORY_SIZE을 열 스토리지의 새 크기(메가바이트 단위)로 바꿉니다(예: 256).

  2. 구성 매개변수 변경사항을 적용하려면 AlloyDB Omni으로 실행 중인 컨테이너를 다시 시작합니다.

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

Kubernetes

google_columnar_engine.memory_size_in_mb 플래그를 설정하려면 데이터베이스 클러스터 매니페스트를 수정하여 primarySpec 섹션에 parameters 속성을 추가합니다.

    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: CLUSTER_NAME
    spec:
      databaseVersion: "15.7.0"
      primarySpec:
        parameters:
          google_columnar_engine.memory_size_in_mb: "COLUMN_MEMORY_SIZE"

다음을 바꿉니다.

  • CLUSTER_NAME: 데이터베이스 클러스터의 이름입니다. 이는 데이터베이스 클러스터를 만들 때 선언한 데이터베이스 클러스터 이름과 동일합니다.
  • COLUMN_MEMORY_SIZE: 열 스토리지의 새 크기(MB, 예: 256)입니다.

스토리지 캐시 구성

스토리지 캐시를 구성하기 전에 AlloyDB Omni 디스크 캐시를 사용 설정해야 합니다.

AlloyDB Omni의 스토리지 캐시를 사용 설정하는 단계는 AlloyDB Omni를 컨테이너에서 실행하는지 또는 Kubernetes 클러스터에서 실행하는지에 따라 다릅니다.

단일 서버

  1. 다음과 같이 스토리지 캐시를 구성합니다.

    ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;
    

    STORAGE_CACHE_SIZE를 원하는 스토리지 캐시 크기(MB)로 바꿉니다. 기본적으로 디스크 캐시의 5% 가 열 엔진에 할당됩니다. 이 플래그의 최대 허용 값은 총 디스크 캐시의 50% 또는 1000 * google_columnar_engine.memory_size_in_mb 중 최솟값입니다.

  2. 구성 매개변수 변경사항을 적용하려면 AlloyDB Omni으로 실행 중인 컨테이너를 다시 시작합니다.

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

Kubernetes

데이터베이스에 스토리지 캐시를 사용 설정하려면 데이터베이스 클러스터 매니페스트를 수정하여 primarySpec 섹션의 features 섹션에 columnarSpillToDisk 속성을 추가합니다.

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: CLUSTER_NAME
spec:
  databaseVersion: "15.7.0"
  primarySpec:
    features:
      columnarSpillToDisk:
        cacheSize: STORAGE_CACHE_SIZE
      ultraFastCache:
        cacheSize: ULTRAFAST_CACHE_SIZE
        genericVolume:
          storageClass: "STORAGE_CLASS_NAME"
...

다음을 바꿉니다.

  • CLUSTER_NAME: 데이터베이스 클러스터의 이름입니다. 이는 데이터베이스 클러스터를 만들 때 선언한 데이터베이스 클러스터 이름과 동일합니다.
  • STORAGE_CACHE_SIZE: 열 형식 스토리지 캐시의 크기입니다(예: 5Gi). 이 필드의 값을 지정하지 않으면 기본적으로 디스크 캐시의 5% 가 열 엔진에 할당됩니다.
  • ULTRAFAST_CACHE_SIZE: 캐시 크기입니다(예: 100Gi). shared_buffers보다 커야 합니다. 이 필드는 선택사항입니다. 이 필드의 값을 지정하지 않으면 AlloyDB Omni는 디스크에 남은 모든 공간을 사용합니다. 이는 컨테이너의 AlloyDB Omni와 Kubernetes 클러스터의 AlloyDB Omni 모두에 적용됩니다. 측정 단위에 관한 자세한 내용은 메모리 리소스 단위를 참고하세요.
  • STORAGE_CLASS_NAME: 초고속 캐시 볼륨의 스토리지 클래스 이름입니다(예: local-storage).

벡터화된 조인 사용 설정

열 형식 엔진에는 벡터화 처리를 요건을 충족하는 쿼리에 적용하여 조인 성능을 개선할 수 있는 벡터화된 조인 기능이 있습니다.

벡터화된 조인을 사용 설정한 후 AlloyDB 쿼리 플래너는 표준 PostgreSQL 해시 조인 연산자 대신 벡터화된 조인 연산자를 적용할 수 있습니다. 계획자는 각 메서드를 사용하여 쿼리를 실행하는 비용을 비교하여 이 결정을 내립니다.

인스턴스에서 벡터화된 조인을 사용 설정하려면 인스턴스의 google_columnar_engine.enable_vectorized_join 플래그를 on로 설정합니다.

인스턴스에 이 플래그를 설정하려면 ALTER SYSTEM PostgreSQL 명령어를 실행합니다.

ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';

AlloyDB Omni는 기본적으로 벡터화된 조인 기능에 스레드 하나를 할당합니다. google_columnar_engine.vectorized_join_threads 플래그를 더 큰 값으로 설정하여 이 기능에 사용할 수 있는 스레드 수를 늘릴 수 있습니다. 최댓값은 cpu_count * 2입니다.

열 기반 엔진 수동 새로고침

기본적으로 열 기반 엔진이 사용 설정되면 백그라운드에서 열 스토어를 새로고침합니다.

열 엔진을 수동으로 새로고침하려면 다음 SQL 쿼리를 실행합니다.

SELECT google_columnar_engine_refresh(relation =>'TABLE_NAME');

TABLE_NAME을 수동으로 새로고침하려는 테이블 또는 구체화된 뷰의 이름으로 바꿉니다.

열 기반 엔진 사용 중지

인스턴스에서 컬럼바 엔진을 사용 중지하려면 google_columnar_engine.enabled 플래그를 off로 설정합니다.

인스턴스에서 이 플래그를 설정하는 단계는 단일 서버의 컨테이너에서 AlloyDB Omni를 실행하는지 또는 Kubernetes 클러스터에서 실행하는지에 따라 다릅니다.

단일 서버

google_columnar_engine.enabledoff로 설정하려면 다음 단계를 따르세요.

  1. ALTER SYSTEM PostgreSQL 명령어를 실행합니다.
ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
  1. 구성 매개변수 변경사항을 적용하려면 AlloyDB Omni으로 실행 중인 컨테이너를 다시 시작합니다.

Docker

AlloyDB Omni 컨테이너를 다시 시작하려면 docker container restart 명령어를 실행합니다.

  sudo docker restart CONTAINER_NAME

CONTAINER_NAME을 AlloyDB Omni 컨테이너를 설치할 때 할당한 이름으로 바꿉니다.

Podman

AlloyDB Omni 컨테이너를 다시 시작하려면 podman container start 명령어를 실행합니다.

  sudo podman restart CONTAINER_NAME

CONTAINER_NAME을 AlloyDB Omni 컨테이너를 설치할 때 할당한 이름으로 바꿉니다.

Kubernetes

google_columnar_engine.enabled 플래그를 off로 설정하려면 데이터베이스 클러스터 매니페스트를 수정하여 primarySpec 섹션에 parameters 속성을 추가합니다.

  apiVersion: alloydbomni.dbadmin.goog/v1
  kind: DBCluster
  metadata:
    name: CLUSTER_NAME
  spec:
    databaseVersion: "15.7.0"
    primarySpec:
      parameters:
        google_columnar_engine.enabled: "off"

CLUSTER_NAME을 데이터베이스 클러스터 이름으로 바꿉니다. 이는 데이터베이스 클러스터를 만들 때 선언한 데이터베이스 클러스터 이름과 동일합니다.

열 기반 엔진 문제 해결

insufficient shared memory 오류 수정

열 형식 엔진이 사용할 수 있는 공유 메모리가 충분하지 않은 상태에서 AlloyDB Omni를 실행하면 다음과 같은 오류가 표시될 수 있습니다.

Insufficient shared memory for generating the columnar formats.

AlloyDB Omni 컨테이너에서 사용할 수 있는 공유 메모리 양을 지정하여 이 문제를 해결할 수 있습니다. 이 방법은 호스트 운영체제에 따라 다릅니다.

Linux

/etc/fstab 파일 수정과 같은 기법을 사용하여 호스트 머신의 /dev/shm 파티션 크기를 늘립니다.

macOS

새 AlloyDB Omni 컨테이너를 설치하고 --shm-size 플래그에 더 큰 공유 메모리 값을 지정합니다.

열이 채워지지 않는 문제 수정

열이 열 엔진에 채워지지 않으면 다음 중 하나가 사실일 수 있습니다.

  • 추가하려는 열에 지원되지 않는 데이터 유형이 포함되어 있습니다.

  • 열 기반 엔진의 요구사항이 충족되지 않습니다.

이 문제를 해결하려면 다음을 시도해 보세요.

  • 쿼리의 테이블 또는 구체화된 뷰가 열 엔진에 있는지 확인합니다.
  • EXPLAIN 문을 사용하여 열 형식 엔진의 사용을 확인합니다.

다음 단계