이 페이지에서는 AlloyDB Omni 데이터베이스 클러스터에서 열 기반 엔진을 사용 설정하거나 사용 중지하는 방법을 설명합니다. 또한 열 스토어에 적절한 초기 크기를 구성하는 방법도 설명합니다.
AlloyDB 열 기반 엔진의 개념적 개요는 AlloyDB Omni 열 기반 엔진 개요를 참고하세요.
열 기반 엔진 사용 설정
인스턴스에서 열 엔진을 사용하려면 인스턴스의 google_columnar_engine.enabled
플래그를 on
로 설정합니다.
인스턴스에서 이 플래그를 설정하는 단계는 AlloyDB Omni를 컨테이너에서 실행하는지 또는 Kubernetes 클러스터에서 실행하는지에 따라 다릅니다.
단일 서버
google_columnar_engine.enabled
를 on
로 설정하려면 다음 단계를 따르세요.
ALTER SYSTEM
PostgreSQL 명령어를 실행합니다.ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
열 엔진의 구성을 조정하려면 데이터베이스 서버를 다시 시작하기 전에 다음 섹션의 안내를 따르세요. 그렇지 않으면 다음 단계를 완료하여 지금 데이터베이스 서버를 다시 시작합니다.
구성 매개변수 변경사항을 적용하려면 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
플래그를 설정하려면 다음을 실행합니다.
ALTER SYSTEM
PostgreSQL 명령어를 실행하여 메모리를 구성합니다.ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_MEMORY_SIZE;
COLUMN_MEMORY_SIZE
을 열 스토리지의 새 크기(메가바이트 단위)로 바꿉니다(예:256
).구성 매개변수 변경사항을 적용하려면 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 클러스터에서 실행하는지에 따라 다릅니다.
단일 서버
다음과 같이 스토리지 캐시를 구성합니다.
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 중 최솟값입니다.구성 매개변수 변경사항을 적용하려면 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.enabled
를 off
로 설정하려면 다음 단계를 따르세요.
ALTER SYSTEM
PostgreSQL 명령어를 실행합니다.
ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
- 구성 매개변수 변경사항을 적용하려면 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
플래그에 더 큰 공유 메모리 값을 지정합니다.
열이 채워지지 않는 문제 수정
열이 열 엔진에 채워지지 않으면 다음 중 하나가 사실일 수 있습니다.
추가하려는 열에 지원되지 않는 데이터 유형이 포함되어 있습니다.
열 기반 엔진의 요구사항이 충족되지 않습니다.
이 문제를 해결하려면 다음을 시도해 보세요.
다음 단계
열 엔진 데이터베이스 플래그의 전체 목록을 참고하세요.
AlloyDB Omni에서 열 기반 엔진으로 분석 쿼리 가속화 Google CodeLab 튜토리얼을 진행합니다.