이 페이지에서는 열을 수동으로 추가 및 삭제하여 열 엔진의 열 스토어 콘텐츠를 관리하는 방법을 설명합니다.
워크로드에 따라 열 스토어에 열을 수동으로 추가하거나 열 스토어에서 테이블 또는 구체화된 뷰의 일부 또는 모든 열을 삭제할 수 있습니다. 쿼리 평가는 저장된 열 형식 데이터를 자동으로 사용하여 쿼리에 응답합니다.
열 스토어에 추가할 테이블, 구체화된 뷰, 열을 선택할 때는 열 스토어의 크기와 워크로드의 모양을 모두 고려하세요. 자주 스캔되는 대규모 테이블이나 뷰가 적합합니다. 이러한 테이블 또는 뷰 내에서 OLAP 워크로드에서 사용하는 대규모 비고유 색인을 식별합니다. 이러한 색인의 열을 열 스토어에 추가하고 색인을 삭제할 수 있으므로 기본 인스턴스에서 색인을 유지하는 데 드는 성능 비용을 없앨 수 있습니다.
다음 방법 중 하나를 사용하여 열 형식 엔진의 열 스토어 콘텐츠를 관리합니다.
테이블, 열, materialized 뷰를 열 스토어에 추가할 때 사용할 수 있는 데이터 유형 및 데이터 소스에 관한 자세한 내용은 열 스토어에 추가할 수 있는 데이터를 참고하세요.
시작하기 전에
- 사용 중인 Google Cloud 프로젝트에 다음 IAM 역할 중 하나가 있어야 합니다.
roles/alloydb.admin
(AlloyDB 관리자가 사전 정의한 IAM 역할)roles/owner
(소유자 기본 IAM 역할)roles/editor
(편집자 기본 IAM 역할)
이러한 역할이 없는 경우 조직 관리자에게 문의하여 액세스 권한을 요청하세요.
데이터베이스 플래그를 업데이트하여 열 스토어 콘텐츠 관리
google_columnar_engine.relations
데이터베이스 플래그를 업데이트하여 열 스토어 콘텐츠를 수동으로 관리할 수 있습니다. 이 플래그에는 모든 열 스토어의 데이터 소스를 지정하는 단일 값이 있습니다. 다시 시작하는 동안 이 플래그에 지정된 열이 열 저장소에 자동으로 채워집니다.
이 플래그는 자동 열 정렬과 함께 사용할 수 있습니다. google_columnar_engine.relations
플래그를 통해 지정한 열을 채운 후 열 엔진에 사용 가능한 메모리가 있으면 자동 열 정렬이 필요에 따라 열 저장소에 열을 추가합니다.
Google Cloud CLI 또는 Google Cloud 콘솔을 사용하여 인스턴스의 데이터베이스 플래그를 설정하는 방법에 관한 자세한 내용은 인스턴스의 데이터베이스 플래그 구성을 참고하세요.
플래그를 사용하여 열 추가
열 저장소에 열을 추가하려면 인스턴스의 google_columnar_engine.relations
플래그를 정의합니다. 값을 쉼표로 구분된 항목 목록으로 설정합니다. 각 항목은 다음 형식으로 특정 테이블에서 포함할 열 목록을 지정합니다.
DATABASE_NAME.SCHEMA_NAME.TABLE_NAME(COLUMN_LIST)
다음을 바꿉니다.
DATABASE_NAME: 열 스토어에 추가할 열이 포함된 데이터베이스입니다.
SCHEMA_NAME: 열 스토어에 추가할 테이블 또는 구체화된 뷰를 식별하는 스키마입니다(예:
public
).TABLE_NAME: 열 스토어에 추가할 열이 포함된 테이블 또는 구체화된 뷰입니다.
COLUMN_LIST: 열 스토어에 추가할 열의 쉼표로 구분된 목록입니다.
하나의 테이블 또는 하나의 구체화된 뷰의 열을 모두 추가하려면 열 목록을 생략합니다.
DATABASE_NAME.SCHEMA_NAME.TABLE_NAME
인스턴스에서 데이터베이스 플래그를 설정하는 방법에 관한 자세한 내용은 인스턴스의 데이터베이스 플래그 구성을 참고하세요.
명령줄 문법에 관한 참고사항
Google Cloud CLI를 사용하여 google_columnar_engine.relations
플래그를 설정하는 경우 대체 구분자 문법을 사용하여 설정한 데이터베이스 플래그를 구분해야 합니다. 열 목록은 쉼표로 구분되므로 동일한 명령줄 인수 내에 플래그를 지정할 때 쉼표가 아닌 문자를 사용해야 합니다.
다음 예에서는 gcloud CLI를 사용하여 public
스키마의 두 열을 열 스토어에 추가하는 방법을 보여줍니다. 이 예에서는 열 엔진을 사용 설정하기 위해 별도의 플래그를 설정합니다. gcloud alloydb instance update
명령어를 사용하여 데이터베이스 플래그를 설정하면 이미 설정된 경우에도 기본값이 아닌 값을 갖도록 하려는 다른 모든 데이터베이스 플래그도 설정해야 하기 때문입니다.
gcloud alloydb instances update INSTANCE_NAME \
--database-flags=^:^\
google_columnar_engine.relations='DATABASE_NAME.public.TABLE_NAME(COLUMN_1,COLUMN_2)'\
:google_columnar_engine.enabled=on\
[:FLAG_3=VALUE_3 ...] \
--region=REGION_ID \
--cluster=CLUSTER_ID
플래그를 사용하여 열 삭제
열 저장소에서 열을 삭제하려면 이전 섹션에 설명된 google_columnar_engine.relations
플래그의 새 값을 설정하고 삭제하려는 열을 제외합니다.
열 스토어에서 모든 열을 삭제하려면 인스턴스에서 google_columnar_engine.relations
플래그를 설정 해제합니다.
인스턴스에서 데이터베이스 플래그를 설정하는 방법에 관한 자세한 내용은 인스턴스의 데이터베이스 플래그 구성을 참고하세요.
SQL 함수를 사용하여 열 스토어 콘텐츠 관리
SQL 함수를 사용하여 열 스토어 콘텐츠를 수동으로 관리할 수 있습니다.
SQL 함수를 사용하여 열 추가
google_columnar_engine_add
SQL 함수를 실행하여 열 스토어에 열을 추가합니다.
이 메서드는 지정된 열을 열 저장소에 추가하고 연결된 노드의 열만 관리합니다. 새 열은 인스턴스 재시작 시 저장소에 유지되지 않습니다.
이 메서드는 google_columnar_engine.relations
데이터베이스 플래그를 변경하지 않습니다. 자동 열 정렬은 이 SQL 함수로 추가된 열을 고려하지 않습니다.
psql 클라이언트
SELECT google_columnar_engine_add( relation => 'TABLE_NAME', columns => 'COLUMN_LIST' );
-
다음을 바꿉니다.
- 'TABLE_NAME': 테이블 또는 구체화된 뷰의 이름이 포함된 문자열입니다. 테이블 또는 뷰가
public
이외의 스키마에 있는 경우 스키마 이름, 점, 테이블 또는 뷰 이름을 지정합니다(예:'myschema.mytable'
). - 'COLUMN_LIST': 추가할 열의 이름을 쉼표로 구분하고 대소문자를 구분하여 나열한 문자열입니다. 테이블 또는 구체화된 뷰의 모든 열을 열 스토어에 추가하려면 이 매개변수를 생략합니다.
SQL 함수를 사용하여 열 삭제
다음과 같이 google_columnar_engine_drop
SQL 함수를 실행합니다.
psql 클라이언트
SELECT google_columnar_engine_drop( relation => 'TABLE_NAME', columns => 'COLUMN_LIST' );
- 'TABLE_NAME': 테이블 또는 구체화된 뷰의 이름이 포함된 문자열입니다. 테이블 또는 뷰가
public
이외의 스키마에 있는 경우 스키마 이름, 점, 테이블 또는 뷰 이름을 지정합니다(예:'myschema.mytable'
). - 'COLUMN_LIST': 추가할 열의 이름을 쉼표로 구분하고 대소문자를 구분하여 나열한 문자열입니다. 테이블 또는 구체화된 뷰의 모든 열을 열 스토어에 추가하려면 이 매개변수를 생략합니다.
google_columnar_engine_drop
함수를 사용하여 google_columnar_engine.relations
데이터베이스 플래그를 수정하여 추가된 열을 삭제할 수 있습니다. 그러나 이렇게 하면 인스턴스가 다시 시작될 때 이러한 열이 열 저장소에 다시 추가됩니다.