AlloyDB Omni에서 열 기반 엔진 구성

문서 버전을 선택합니다.

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

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

열 기반 엔진 사용 설정

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

Kubernetes

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

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

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

열 스토어 크기 구성

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

메모리와 스토리지 캐시를 합한 값이 열 기반 엔진 총 용량을 나타냅니다.

메모리 구성

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

Kubernetes

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

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

다음을 바꿉니다.

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

스토리지 캐시 구성

공유 기기나 전용 기기에서 열 기반 엔진 스토리지 캐시를 구성할 수 있습니다.

Kubernetes

공유 기기

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

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: CLUSTER_NAME
spec:
  databaseVersion: "17.5.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에서 디스크에 남은 모든 공간을 사용합니다. 이는 컨테이너와 Kubernetes 클러스터의 AlloyDB Omni 모두에 적용됩니다. 측정 단위에 대한 자세한 내용은 메모리 리소스 단위를 참조하세요.
  • STORAGE_CLASS_NAME: 초고속 캐시 볼륨의 스토리지 클래스 이름(예: local-storage)

전용 기기

기본적으로 열 기반 엔진의 스토리지 캐시는 AlloyDB Omni 디스크 캐시와 동일한 기기를 공유합니다. 하지만 다음과 같은 이유로 스토리지 캐시에 자체 전용 기기를 사용하도록 열 기반 엔진을 구성할 수 있습니다.

  • 기본 스토리지가 이미 고성능 SSD에 있으므로 디스크 캐시가 필요하지 않습니다. 이 시나리오에서는 디스크 캐시용 공간을 할당하지 않고도 열 기반 엔진 스토리지 캐시를 만들 수 있습니다.
  • 디스크 캐시와 열 기반 엔진 캐시에 다른 스토리지 미디어를 사용하려고 합니다. 예를 들어 디스크 캐시에는 표준 SSD를 사용하고 열 형식 엔진 캐시에는 고성능 NVMe SSD를 사용할 수 있습니다.
일반 볼륨 사용

열 기반 엔진 스토리지 캐시 전용 기기를 구성하려면 DBCluster 매니페스트를 수정하여 features 섹션에 columnarSpillToDisk 속성을 추가합니다. 그런 다음 columnarSpillToDisk 내에서 전용 열 기반 엔진 캐시에 사용할 스토리지를 가리키는 storageClass가 있는 genericVolume을 지정할 수 있습니다.

local-ssd라는 스토리지 클래스를 사용하여 열 기반 엔진 스토리지 캐시에 50Gi 전용 기기를 구성하는 방법의 예는 다음과 같습니다.

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

다음을 바꿉니다.

  • CLUSTER_NAME: 데이터베이스 클러스터의 이름. 이 이름은 데이터베이스 클러스터를 만들 때 선언한 데이터베이스 클러스터 이름과 동일합니다.
  • STORAGE_CACHE_SIZE: 열 기반 스토리지 캐시 크기(예: 50Gi). 이 필드 값을 지정하지 않으면 기본적으로 디스크 캐시의 5%가 열 기반 엔진에 할당됩니다.
  • STORAGE_CLASS_NAME: 전용 열 기반 엔진 캐시 볼륨의 스토리지 클래스 이름(예: local-ssd)
임시 볼륨 사용

스토리지 캐시에 임시 emptyDir 볼륨을 사용하도록 열 기반 엔진을 구성할 수 있습니다. emptyDir 볼륨은 포드가 노드에 할당될 때 생성되며 포드가 해당 노드에서 실행되는 한 계속 존재합니다. 노드에서 포드가 삭제되면 emptyDir의 데이터가 영구적으로 삭제됩니다.

열 형식 스토리지 캐시에 emptyDir 볼륨을 구성하려면 DBCluster 매니페스트를 수정하여 columnarSpillToDisk 섹션에 emptyDir 속성을 추가합니다.

다음은 열 형식 스토리지 캐시의 임시 볼륨을 구성하는 방법의 예시입니다.

apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: CLUSTER_NAME
spec:
  databaseVersion: "17.5.0"
  primarySpec:
    features:
      columnarSpillToDisk:
        cacheSize: 50Gi
        emptyDir: {}

다음을 바꿉니다.

  • CLUSTER_NAME: 데이터베이스 클러스터의 이름. 이 이름은 데이터베이스 클러스터를 만들 때 선언한 데이터베이스 클러스터 이름과 동일합니다.
  • STORAGE_CACHE_SIZE: 열 기반 스토리지 캐시 크기(예: 50Gi).

벡터화된 조인 사용 설정

열 기반 엔진에는 적격한 쿼리에 벡터화된 처리를 적용하여 조인 성능을 향상시킬 수 있는 벡터화된 조인 기능이 있습니다.

벡터화된 조인을 사용 설정하면 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로 설정합니다.

Kubernetes

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

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

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

다음 단계