열 스토어 콘텐츠 수동 관리

이 페이지에서는 열을 수동으로 추가 및 삭제하여 열 엔진의 열 스토어 콘텐츠를 관리하는 방법을 설명합니다.

워크로드에 따라 열 스토어에 열을 수동으로 추가하거나 열 스토어에서 테이블 또는 구체화된 뷰의 일부 또는 모든 열을 삭제할 수 있습니다. 쿼리 평가는 저장된 열 형식 데이터를 자동으로 사용하여 쿼리에 응답합니다.

열 스토어에 추가할 테이블, 구체화된 뷰, 열을 선택할 때는 열 스토어의 크기와 워크로드의 모양을 모두 고려하세요. 자주 스캔되는 대규모 테이블이나 뷰가 적합합니다. 이러한 테이블 또는 뷰 내에서 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 데이터베이스 플래그를 수정하여 추가된 열을 삭제할 수 있습니다. 하지만 이렇게 하면 인스턴스가 다시 시작될 때 이러한 열이 열 저장소에 다시 추가됩니다.