이 페이지에서는 PostgreSQL용 AlloyDB에서 열 기반 엔진의 열 스토어에 있는 데이터를 최신 상태로 유지하는 방법을 설명합니다.
테이블 행이 추가, 삭제 또는 업데이트되면 열 기반 엔진이 열 스토어의 데이터를 즉시 업데이트하지 않습니다. 대신 열 스토어에서 영향을 받는 콘텐츠를 무효로 표시하고 열 스토어의 열 중심 데이터와 행 캐시 및 데이터베이스 스토리지의 행 중심 데이터를 모두 사용하여 쿼리를 계획하고 실행합니다.
시간이 지남에 따라 무효화되는 데이터 블록이 많아지면 열 기반 엔진에서 제공하는 쿼리 성능 개선이 줄어들어 쿼리 성능 개선을 다시 얻기 위해 열 기반 데이터를 새로고침해야 하는 지점에 도달합니다. 이 새로고침 기준점에 도달하면 열 기반 엔진은 백그라운드 작업을 사용하여 열 스토어에서 잘못된 데이터를 새로고침합니다. 기본적으로 열 기반 엔진은 50을 새로고침 기준점으로 사용합니다. 이는 열 스토어의 지정된 콘텐츠에서 50%가 무효화되면 새로고침으로 표시된다는 것을 의미합니다. 이 새로고침 기준점을 변경하여 자동 새로고침의 오버헤드를 조정하고 애플리케이션 워크로드의 지속적인 쿼리 성능을 개선할 수 있습니다.
또한 언제든지 열 형식 엔진에 로드된 테이블과 ScaNN 색인을 수동으로 새로고침할 수 있습니다. 일반적으로 테이블의 변경사항이 표시된 다음 가능한 한 빨리 열 스토어에 반영되도록 하려면 수동 새로고침을 실행합니다.
잘못된 데이터 비율 확인
애플리케이션이 테이블의 행을 추가, 삭제 또는 업데이트하면 열 기반 엔진은 열 스토어에서 영향을 받는 데이터를 잘못된 것으로 표시합니다. g_columnar_relations
뷰를 쿼리하여 테이블 및 구체화된 뷰의 무효 데이터 비율을 확인할 수 있습니다. 이를 통해 수동으로 새로고침해야 하는지 또는 자동 새로고침 기준점을 조정해야 하는지 결정할 수 있습니다.
열 저장소의 모든 관계에 대한 무효화 비율을 보려면 다음 쿼리를 실행하세요.
SELECT relation_name, invalid_percentage FROM g_columnar_relations;
특정 테이블의 무효화 비율을 확인하려면 쿼리에 WHERE
절을 추가합니다.
SELECT relation_name, CASE WHEN total_block_count > 0 THEN (invalid_block_count * 100.0 / total_block_count) ELSE 0.0 END AS invalid_block_percentage FROM g_columnar_relations; WHERE relation_name = TABLE_NAME
TABLE_NAME
을 테이블이나 구체화된 뷰의 이름을 포함하는 문자열로 바꿉니다. 리소스가 public
이외의 스키마에 있는 경우 스키마 이름을 SCHEMA_NAME.TABLE_NAME
형식으로 지정해야 합니다(예: myschema.mytable
).
특정 색인의 무효화 비율을 확인하려면 쿼리에 WHERE
절을 추가합니다.
SELECT index_name, CASE WHEN total_block_count > 0 THEN (invalid_block_count * 100.0 / total_block_count) ELSE 0.0 END AS invalid_block_percentage FROM g_columnar_indexes; WHERE index_name = INDEX_NAME
열 기반 엔진의 새로고침 기준점 변경
열 기반 엔진의 새로고침 기준점을 변경하려면 AlloyDB 인스턴스의 google_columnar_engine.refresh_threshold_percentage
데이터베이스 플래그 값을 수정해야 합니다.
콘솔
- Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.
- 구성하려는 인스턴스가 포함된 클러스터의 이름을 클릭합니다.
- 클러스터의 인스턴스 섹션에서 인스턴스를 찾아 수정을 클릭합니다.
- 플래그 섹션에서 새 플래그를 추가하거나 기존
google_columnar_engine.refresh_threshold_percentage
플래그를 수정합니다. - 값을
1
~100
사이의 정수로 설정합니다. 이 값은 새로고침을 트리거하는 잘못된 데이터의 비율을 나타냅니다. - 완료를 클릭합니다.
gcloud
gcloud CLI를 사용하려면 Google Cloud CLI를 설치 및 초기화하거나 Cloud Shell을 사용합니다.
열 기반 엔진의 새로고침 기준점을 변경하려면 다음 명령어를 실행합니다.gcloud alloydb instances update INSTANCE_ID \ --database-flags=google_columnar_engine.refresh_threshold_percentage=THRESHOLD \ --cluster=CLUSTER_ID \ --region=REGION_ID \ --project=PROJECT_ID
다음을 바꿉니다.
- INSTANCE_ID: 인스턴스의 ID입니다.
- THRESHOLD:
1
~100
사이의 정수 값입니다. 이 값은 콘텐츠 내 데이터 블록 중 몇 퍼센트가 무효화되어야 콘텐츠가 새로고침 대상으로 표시되는지를 지정합니다. - CLUSTER_ID: 인스턴스가 있는 클러스터의 ID입니다.
- REGION_ID: 클러스터의 리전
- PROJECT_ID: 프로젝트 ID
열 스토어에서 테이블 및 ScaNN 색인 수동 새로고침
전용 SQL 함수를 사용하여 언제든지 열 형식 엔진에서 테이블과 ScaNN 색인을 수동으로 새로고침할 수 있습니다.
열 기반 엔진에서 테이블 데이터를 새로고침하려면 google_columnar_engine_refresh
함수를 실행하세요.
SELECT google_columnar_engine_refresh(TABLE_NAME);
TABLE_NAME
을 테이블이나 구체화된 뷰의 이름을 포함하는 문자열로 바꿉니다. 리소스가 public
이외의 스키마에 있는 경우 스키마 이름을 SCHEMA_NAME.TABLE_NAME
형식으로 지정해야 합니다(예: myschema.mytable
).
마찬가지로 열 기반 엔진에서 ScaNN 색인을 수동으로 새로고침하려면 google_columnar_engine_refresh_index
함수를 실행합니다.
SELECT google_columnar_engine_refresh_index(index => INDEX_NAME);
INDEX_NAME
을 새로고침할 ScaNN 색인의 이름이 포함된 문자열로 바꿉니다.