인메모리 열 스토어 데이터의 최신 상태 유지

이 페이지에서는 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 데이터베이스 플래그 값을 수정해야 합니다.

콘솔

  1. Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.

    클러스터로 이동

  2. 구성하려는 인스턴스가 포함된 클러스터의 이름을 클릭합니다.
  3. 클러스터의 인스턴스 섹션에서 인스턴스를 찾아 수정을 클릭합니다.
  4. 플래그 섹션에서 새 플래그를 추가하거나 기존 google_columnar_engine.refresh_threshold_percentage 플래그를 수정합니다.
  5. 값을 1~100 사이의 정수로 설정합니다. 이 값은 새로고침을 트리거하는 잘못된 데이터의 비율을 나타냅니다.
  6. 완료를 클릭합니다.

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 색인의 이름이 포함된 문자열로 바꿉니다.