테이블 통계

Bigtable은 테이블 통계(테이블에 대한 메타데이터)를 제공합니다. 이 통계는 열당 행 수 또는 열 당 평균 셀 수와 같은 테이블에 대한 요약 정보를 제공합니다.

이 문서에서는 테이블 통계와 Google Cloud CLI를 사용하여 테이블 통계를 가져오는 방법을 설명합니다. 이 페이지를 읽기 전에 Bigtable 스토리지 모델을 이해하고 스키마 설계 권장사항가비지 컬렉션을 숙지하고 있어야 합니다.

테이블 통계는 Bigtable 테이블에 대한 관측 가능성을 제공합니다. 성능 문제나 스토리지 문제를 해결하거나 스토리지 비용 원인을 확인하려는 경우에 유용할 수 있습니다. 또한 데이터를 필요 이상으로 저장할지 여부를 결정하는 데도 도움이 될 수 있습니다.

예상 정밀도

테이블의 테이블 통계를 검색할 때 제공되는 데이터는 근사치입니다. 테이블 통계는 가장 최근의 압축축을 기준으로 인스턴스 클러스터 중 하나의 테이블 상태를 반영합니다.

일반적으로 테이블 생성 후 약 1주일 후에 발생하는 초기 압축 전에는 전체 테이블 통계 집합을 사용할 수 없습니다. 테이블 통계는 최근 압축을 기준으로 정확하며, 최대 일주일 전일 수 있습니다.

테이블 통계 필드

테이블의 테이블 통계를 요청하면 다음 필드가 반환됩니다. 세부정보와 예시는 다음 섹션에서 설명됩니다.

테이블 통계 필드 API 이름 설명
행 수 row_count 테이블의 행 수입니다. 자세한 내용은 행 수를 참조하세요.
행당 평균 열 수 average_columns_per_row 전체 테이블의 각 행에 있는 평균 열 수입니다. 자세한 내용과 예시는 행당 평균 열 수를 참조하세요.
열당 평균 셀 수 average_cells_per_column 모든 행의 모든 열에 저장된 평균 셀 수입니다. 자세한 내용은 열당 평균 셀 수를 참조하세요.
바이트 단위의 논리적 데이터 logical_data_bytes 테이블이 점유하는 공간의 크기입니다. 자세한 내용은 바이트 단위의 논리적 데이터를 참조하세요.

테이블 통계에는 테이블의 각 column family에 대한 다음 필드도 포함됩니다.

column family 통계 필드 API 이름 설명
행당 평균 열 수 average_columns_per_row column family의 행당 평균 열 수입니다. 자세한 내용과 예시는 행당 평균 열 수를 참조하세요.
열당 평균 셀 수 average_cells_per_column column family에 열이 있는 모든 행에 대해 평균으로 계산되는 각 열의 셀 수입니다. 자세한 내용과 예시는 열당 평균 셀 수를 참조하세요.
바이트 단위의 논리적 데이터 logical_data_bytes column family가 점유하는 공간의 크기입니다. 자세한 내용은 바이트 단위의 논리적 데이터를 참조하세요.

테이블 통계 필드 세부정보

행 수

행 수는 테이블의 행 수입니다. 각 행은 row key로 식별됩니다.

행당 평균 열 수

Bigtable은 테이블의 행당 평균 열 수에 도달하기 위해 전체 테이블의 열 수를 계산하고 이 값을 테이블의 행 수로 나눕니다.

예를 들어 다음 테이블을 살펴보겠습니다. 첫 번째 행에는 열이 3개 있고 두 번째 행에는 열이 2개 있습니다.

row key Column family family-A Column family family-B
row key 1 family-A:qualifier-W family-A:qualifier-X family-B:qualifier-Y
row key 2 family-A:qualifier-W family-B:qualifier-Z

테이블에는 열 5개와 행 2개가 있으므로 행당 평균 열 수는 2.5입니다.

이 테이블 통계는 테이블이 길고 좁거나(행당 열 수가 적음) 짧고 넓은지(각 행마다 여러 개의 열)에 대한 일반적인 정보를 제공합니다.

열당 평균 셀 수

Bigtable은 테이블의 열당 평균 셀 수를 가져오기 위해 테이블에 저장된 총 셀 수를 테이블의 열 수로 나눕니다.

스키마 디자인 및 가비지 컬렉션 정책에 따라 테이블의 열에 여러 셀이 있거나 셀 하나만 있을 수 있습니다. 저장할 수 있는 셀 수는 할당량과 테이블 내 데이터 크기의 한도 페이지에 설명된 데이터 크기 한도에 따라 달라집니다.

이 수가 예상보다 많은 경우 가비지 컬렉션 규칙을 검사하여 필요한 것보다 많은 셀을 보존하고 있는지 확인합니다. 스키마 및 쓰기 패턴을 조정해야 하는지 여부도 생각해보세요.

바이트 단위의 논리적 데이터(테이블)

이 값은 전체 테이블을 읽는 데 필요한 대략적인 바이트 수를 나타냅니다. 이 테이블 통계로 테이블에 저장된 바이트 수를 파악할 수 있습니다. 논리적 데이터를 바이트 단위로 이해하면 압축이 테이블에 미치는 영향을 이해하는 데 도움이 될 수 있습니다. 예를 들어 Cloud Monitoring에서 보고된 테이블 크기가 테이블의 바이트 단위의 논리적 데이터보다 크거나 같으면 데이터를 쉽게 압축할 수 없는 형식으로 저장하는 것일 수도 있습니다.

column family 통계 필드 세부정보

테이블의 테이블 통계에는 테이블의 각 column family에 대한 다음 필드가 포함됩니다.

행당 평균 열 수

이 수는 column family의 열 수를 테이블의 행 수로 나눠서 계산합니다.

예를 들어 다음 테이블을 살펴보겠습니다. 테이블에는 column family family-Afamily-B의 열이 있는 3개의 행이 있습니다.

row key Column family family-A Column family family-B
row key 1 family-A:qualifier-W family-A:qualifier-X family-B:qualifier-Y
row key 2 family-A:qualifier-W
row key 3 family-A:qualifier-W family-A:qualifier-X family-B:qualifier-Y family-B:qualifier-Z

column family family-A에는 테이블에 총 5개의 열이 있습니다. 3개의 행으로 나누면 family-A의 열당 평균 셀 수는 1.67입니다(소수점 2자리로 반올림됨).

column family family-B에는 테이블에 총 3개의 열이 있습니다. 3개의 행으로 나누면 family-A의 행당 평균 열 수는 1입니다.

열당 평균 셀 수

Bigtable은 열당 column family의 평균 셀 수를 결정하기 위해 테이블의 모든 행에 있는 column family의 모든 셀 수를 테이블의 행 수로 나눕니다.

예를 들어 column family family-D에서 다음 행을 살펴보겠습니다.

row key Column family family-D
row key 1 family-D:qualifier-W(셀 3개) family-D:qualifier-X(셀 1개)
row key 2 family-D:qualifier-X(셀 10개)
row key 3 family-D:qualifier-W(셀 7개) family-D:qualifier-Y(셀 6개)

column family의 셀 수는 3 + 1 + 10 + 7 + 6 = 27입니다. 이 값을 3(행 수)으로 나누면 column family family-D에 열당 평균 셀이 9임을 의미합니다.

바이트 단위의 논리적 데이터(column family)

바이트 단위의 논리적 데이터는 column family가 차지하는 공간을 반영합니다. 이 값은 테이블 통계가 반환될 때 column family의 모든 데이터를 읽어야 하는 대략적인 바이트 수입니다.

gcloud CLI 사용 예시

sample-table이라는 테이블의 테이블 통계를 가져오려면 bigtable instances table describe 명령어를 사용합니다.

gcloud bigtable instances tables describe TABLE_ID \
    --instance=INSTANCE_ID --view stats

다음을 바꿉니다.

  • TABLE_ID: 테이블의 영구 식별자
  • INSTANCE_ID: 인스턴스의 영구 식별자

출력은 다음과 비슷합니다.

  columnFamilies:
    my-family:
     stats:
       averageCellsPerColumn: 12.34
       averageColumnsPerRow: 56.78
       logicalDataBytes: 314159
  name: projects/my-project/instances/INSTANCE_ID/tables/TABLE_ID
  stats:
    averageCellsPerColumn: 12.34
    averageColumnsPerRow: 56.78
    logicalDataBytes: 314159
    rowCount: 271828

다음 단계