AlloyDB Omni에서 열 기반 엔진 구성

문서 버전을 선택합니다.

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

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

열 기반 엔진 사용 설정

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

google_columnar_engine.enabled 매개변수를 on으로 설정하려면 다음 단계를 완료하세요.

  1. DBCluster 데이터베이스 클러스터 매니페스트를 엽니다.

  2. primarySpec 섹션에서 google_columnar_engine.enabled 매개변수를 parameters 블록에 추가합니다.

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          parameters:
            google_columnar_engine.enabled: "on"
    

    DB_CLUSTER_NAME을 데이터베이스 클러스터 이름으로 바꿉니다.

  3. RPM 오케스트레이터가 매개변수 변경사항을 적용하기 위해 데이터베이스를 자동으로 다시 시작합니다. 다음 방법 중 하나를 사용하여 업데이트된 DBCluster 매니페스트를 적용합니다.

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

    다음을 바꿉니다.

    • DEPLOYMENT_SPEC_PATH: 배포 사양 디렉터리의 경로입니다.
    • DBCLUSTER_SPECIFICATION: 수정한 DBCluster 매니페스트의 경로입니다.

    Ansible

    1. update.yml 플레이북 파일을 만듭니다.

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

      다음을 바꿉니다.

      • SSH_USER: SSH를 사용하여 클러스터의 노드에 연결하는 데 사용하는 사용자 이름입니다.
      • SSH_KEY_PATH: 노드에 연결하는 데 사용되는 SSH 비공개 키 파일의 로컬 경로입니다.
    2. 제어 노드에서 플레이북을 실행하고 리소스 사양을 추가 변수로 전달합니다.

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

      다음을 바꿉니다.

      • DEPLOYMENT_SPEC_PATH: 배포 사양 디렉터리의 경로입니다.
      • DBCLUSTER_SPECIFICATION: 수정한 DBCluster 매니페스트의 경로입니다.

열 스토어 크기 구성

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

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

메모리 구성

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

google_columnar_engine.memory_size_in_mb 매개변수를 설정하려면 다음 단계를 완료하세요.

  1. DBCluster 데이터베이스 클러스터 매니페스트를 엽니다.

  2. primarySpec 섹션에서 열 기반 엔진 구성을 parameters 블록에 추가합니다.

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          parameters:
            google_columnar_engine.enabled: "on"
            google_columnar_engine.memory_size_in_mb: "MEMORY_SIZE_MB"
    

    다음을 바꿉니다.

    • DB_CLUSTER_NAME: 데이터베이스 클러스터의 이름입니다.
    • MEMORY_SIZE_MB: 열 기반 엔진에 할당할 메모리 양(MB)입니다.
  3. RPM 오케스트레이터가 매개변수 변경사항을 적용하기 위해 데이터베이스를 자동으로 다시 시작합니다. 다음 방법 중 하나를 사용하여 업데이트된 DBCluster 매니페스트를 적용합니다.

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

    다음을 바꿉니다.

    • DEPLOYMENT_SPEC_PATH: 배포 사양 디렉터리의 경로입니다.
    • DBCLUSTER_SPECIFICATION: 수정한 DBCluster 매니페스트의 경로입니다.

    Ansible

    1. update.yml 플레이북 파일을 만듭니다.

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

      다음을 바꿉니다.

      • SSH_USER: SSH를 사용하여 클러스터의 노드에 연결하는 데 사용하는 사용자 이름입니다.
      • SSH_KEY_PATH: 노드에 연결하는 데 사용되는 SSH 비공개 키 파일의 로컬 경로입니다.
    2. 제어 노드에서 플레이북을 실행하고 리소스 사양을 추가 변수로 전달합니다.

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

      다음을 바꿉니다.

      • DEPLOYMENT_SPEC_PATH: 배포 사양 디렉터리의 경로입니다.
      • DBCLUSTER_SPECIFICATION: 수정한 DBCluster 매니페스트의 경로입니다.

스토리지 캐시 구성

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

전용 기기

열 기반 엔진 스토리지 캐시의 전용 기기를 구성하려면 다음 단계를 완료하세요.

  1. DBCluster 데이터베이스 클러스터 매니페스트를 엽니다.

  2. primarySpec 섹션에서 columnarSpillToDisk 속성을 cacheSizelocalVolume.path와 함께 features 블록에 추가합니다.

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          features:
            columnarSpillToDisk:
              cacheSize: STORAGE_CACHE_SIZE
              localVolume:
                path: COLUMNAR_CACHE_DIR_PATH
    

    다음을 바꿉니다.

    • DB_CLUSTER_NAME: 데이터베이스 클러스터의 이름입니다.
    • STORAGE_CACHE_SIZE: 열 기반 엔진 스토리지 캐시의 크기 제한(예: 50Gi)입니다.
    • COLUMNAR_CACHE_DIR_PATH: 열 기반 엔진 스토리지 캐시의 전용 디렉터리 파일 시스템 경로(예: /mnt/disks/columnarcache)입니다.
  3. alloydbctl 또는 Ansible을 사용하여 업데이트된 DBCluster 매니페스트를 적용합니다.

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

    다음을 바꿉니다.

    • DEPLOYMENT_SPEC_PATH: 배포 사양 디렉터리의 경로입니다.
    • DBCLUSTER_SPECIFICATION: 수정한 DBCluster 매니페스트의 경로입니다.

    Ansible

    1. update.yml 플레이북 파일을 만듭니다.

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

      다음을 바꿉니다.

      • SSH_USER: SSH를 사용하여 클러스터의 노드에 연결하는 데 사용하는 사용자 이름입니다.
      • SSH_KEY_PATH: 노드에 연결하는 데 사용되는 SSH 비공개 키 파일의 로컬 경로입니다.
    2. 제어 노드에서 플레이북을 실행하고 리소스 사양을 추가 변수로 전달합니다.

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

      다음을 바꿉니다.

      • DEPLOYMENT_SPEC_PATH: 배포 사양 디렉터리의 경로입니다.
      • DBCLUSTER_SPECIFICATION: 수정한 DBCluster 매니페스트의 경로입니다.

공유 기기

columnarSpillToDisk에서 localVolume.path를 지정하지 않으면 열 기반 엔진 스토리지 캐시가 ultraFastCache에서 구성된 디스크 캐시 스토리지를 공유합니다.

공유 기기에서 열 기반 엔진 스토리지 캐시를 구성하려면 다음 단계를 완료하세요.

  1. DBCluster 데이터베이스 클러스터 매니페스트를 엽니다.

  2. primarySpec 섹션에서 columnarSpillToDiskultraFastCache 속성을 features 블록에 추가합니다.

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          features:
            columnarSpillToDisk:
              cacheSize: STORAGE_CACHE_SIZE
            ultraFastCache:
              cacheSize: ULTRAFAST_CACHE_SIZE
              localVolume:
                path: DISK_CACHE_DIR_PATH
    

    다음을 바꿉니다.

    • DB_CLUSTER_NAME: 데이터베이스 클러스터의 이름입니다.
    • STORAGE_CACHE_SIZE: 열 기반 스토리지 캐시의 크기(예: 50Gi)입니다. 이 필드 값을 지정하지 않으면 기본적으로 디스크 캐시의 5% 가 열 기반 엔진에 할당됩니다.
    • ULTRAFAST_CACHE_SIZE: AlloyDB Omni에서 예약한 초고속 캐시 버퍼의 최대 크기(예: 100Gi)입니다. 설정하지 않으면 localVolume.path의 나머지 디스크 공간이 모두 사용됩니다.
    • DISK_CACHE_DIR_PATH: 초고속 캐시 파일의 폴더 경로(예: /mnt/disks/chillcache)입니다.
  3. alloydbctl 또는 Ansible을 사용하여 업데이트된 DBCluster 매니페스트를 적용합니다.

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

    다음을 바꿉니다.

    • DEPLOYMENT_SPEC_PATH: 배포 사양 디렉터리의 경로입니다.
    • DBCLUSTER_SPECIFICATION: 수정한 DBCluster 매니페스트의 경로입니다.

    Ansible

    1. update.yml 플레이북 파일을 만듭니다.

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

      다음을 바꿉니다.

      • SSH_USER: SSH를 사용하여 클러스터의 노드에 연결하는 데 사용하는 사용자 이름입니다.
      • SSH_KEY_PATH: 노드에 연결하는 데 사용되는 SSH 비공개 키 파일의 로컬 경로입니다.
    2. 제어 노드에서 플레이북을 실행하고 리소스 사양을 추가 변수로 전달합니다.

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

      다음을 바꿉니다.

      • DEPLOYMENT_SPEC_PATH: 배포 사양 디렉터리의 경로입니다.
      • DBCLUSTER_SPECIFICATION: 수정한 DBCluster 매니페스트의 경로입니다.

벡터화된 조인 사용 설정

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

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

google_columnar_engine.enabled 매개변수를 off로 설정하려면 다음 단계를 완료하세요.

  1. DBCluster 데이터베이스 클러스터 매니페스트를 엽니다.

  2. primarySpec 섹션에서 google_columnar_engine.enabled 매개변수를 parameters 블록에서 off로 설정합니다.

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          parameters:
            google_columnar_engine.enabled: "off"
    

    DB_CLUSTER_NAME을 데이터베이스 클러스터 이름으로 바꿉니다.

  3. RPM 오케스트레이터가 매개변수 변경사항을 적용하기 위해 데이터베이스를 자동으로 다시 시작합니다. 다음 방법 중 하나를 사용하여 업데이트된 DBCluster 매니페스트를 적용합니다.

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

    다음을 바꿉니다.

    • DEPLOYMENT_SPEC_PATH: 배포 사양 디렉터리의 경로입니다.
    • DBCLUSTER_SPECIFICATION: 수정한 DBCluster 매니페스트의 경로입니다.

    Ansible

    1. update.yml 플레이북 파일을 만듭니다.

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

      다음을 바꿉니다.

      • SSH_USER: SSH를 사용하여 클러스터의 노드에 연결하는 데 사용하는 사용자 이름입니다.
      • SSH_KEY_PATH: 노드에 연결하는 데 사용되는 SSH 비공개 키 파일의 로컬 경로입니다.
    2. 제어 노드에서 플레이북을 실행하고 리소스 사양을 추가 변수로 전달합니다.

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

      다음을 바꿉니다.

      • DEPLOYMENT_SPEC_PATH: 배포 사양 디렉터리의 경로입니다.
      • DBCLUSTER_SPECIFICATION: 수정한 DBCluster 매니페스트의 경로입니다.

다음 단계

  • 열 기반 엔진 데이터베이스 플래그의 전체 목록을 참고하세요.

  • AlloyDB Omni에서 열 기반 엔진으로 분석 쿼리 가속화 Codelab을 사용해 보세요.