테이블 통계
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-A
및 family-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