表统计信息

Bigtable 提供表统计信息(表的相关元数据) ,用于为您提供该表的相关摘要信息 行数或每列的平均单元格数。

本文档介绍表统计信息,并说明如何使用 Google Cloud CLI 获取这些统计信息。在阅读本页之前,您应该先了解 Bigtable 存储模型 并熟悉 架构设计最佳实践垃圾回收

表统计信息使您可以深入了解 Bigtable 表。当您排查性能或存储问题时,或者想要确定存储费用的来源时,这些信息非常有用。它们还可以帮助您确定存储的数据是否超出所需的量。

预期精确度

检索表的表统计信息时,您获取的数据是近似值:表统计信息反映最近一次压缩后表在实例的集群中的状态。

完成初始压缩后(通常在表创建一周后),才可获取完整的表统计信息。最近一次压缩后的表统计信息是准确的,最近一次压缩可能是一周前。

表统计信息字段

请求表的表统计信息会返回以下字段。详细信息和示例将在下一部分中介绍。

表统计信息字段 API 名称 说明
行数 row_count 表中的行数。如需了解详情,请参阅行数
每行的平均列数 average_columns_per_row 整个表中每行的平均列数。对于 详细信息和示例,请参阅平均 每行的列数
每列的平均单元数 average_cells_per_column 所有行的所有列中存储的平均单元数。如需了解详情,请参阅每列的平均单元数
逻辑数据字节数 logical_data_bytes 表占用的空间量。如需了解详情,请参阅逻辑数据字节数

表统计信息还包括表中每个列族的以下字段。

列族统计信息字段 API 名称 说明
每行的平均列数 average_columns_per_row 列族中每行的平均列数。如需了解详情和示例,请参阅每行的平均列数
每列的平均单元数 average_cells_per_column 每列中的单元数,这是包含列族中的列的所有行的平均值。如需了解详情和示例,请参阅每列的平均单元数
逻辑数据字节数 logical_data_bytes 列族占用的空间量。如需了解详情,请参阅逻辑数据字节数

表统计信息字段详细信息

行数

行数是表中的行数量。每一行由其行键标识。

每行的平均列数

为了获得表中每行的平均列数,Bigtable 会计算整个表中的列数,然后将该值除以表中的行数。

例如,假设有以下表。第一行有三列,第二行有两列。

行键 列族 family-A 列族 family-B
行键 1 family-A:qualifier-W family-A:qualifier-X family-B:qualifier-Y
行键 2 family-A:qualifier-W family-B:qualifier-Z

该表包含五列和两行,因此每行的平均列数为 2.5

这一表统计信息可让您大致了解您的表是高而窄(每行的列较少)还是矮而宽(每行的列较多)。

每列的平均单元数

为了得到表每列的平均单元数,Bigtable 会计算表中存储的单元总数,并将其除以表中的列数。

根据您的架构设计和垃圾回收政策,您的表可能在一个列中有多个单元,或者可能只有一个单元。您可以存储的单元数量受“配额和限制”页面中表中的数据大小下列出的数据大小限制的约束。

如果您发现此数字高于预期,请检查垃圾回收规则以查看保留的单元数量是否超过所需数量。您可能还需要了解是否应调整架构和写入模式。

逻辑数据字节数(表)

此值表示读取整个表所需的大致字节数。这一表统计信息可让您了解表中存储的字节数。了解逻辑数据字节数有助于您了解压缩对表的影响。例如,如果 Cloud Monitoring 中报告的表大小等于或大于表的逻辑数据字节数,则数据的存储格式可能不易压缩。

列族统计信息字段详细信息

表的表统计信息包括表中每个列族的以下字段。

每行的平均列数

此数值的计算方法是:将列族中的列数除以表中的行数。

例如,假设有以下表。该表有三行和两个列族 family-Afamily-B

行键 列族 family-A 列族 family-B
行键 1 family-A:qualifier-W family-A:qualifier-X family-B:qualifier-Y
行键 2 family-A:qualifier-W
行键 3 family-A:qualifier-W family-A:qualifier-X family-B:qualifier-Y family-B:qualifier-Z

在表中,列族 family-A 总共有五列。除以三行,意味着 family-A 每列的平均单元数为 1.67(此处四舍五入到小数点后两位)。

在表中,列族 family-B 总共有三列。除以三行,family-A 的每行平均列数为 1

每列的平均单元数

为了确定列族每列的平均单元数,Bigtable 会计算表的所有行中的列族中所有单元的数量,并将其除以表中的行数。

例如,假设 family-D 列族中有以下行。

行键 列族 family-D
行键 1 family-D:qualifier-W(3 个单元) family-D:qualifier-X(1 个单元)
行键 2 family-D:qualifier-X(10 个单元)
行键 3 family-D:qualifier-W(7 个单元) family-D:qualifier-Y(6 个单元)

列族中的单元数为 3 + 1 + 10 + 7 + 6 = 27。该值除以 3(行数),意味着列族 family-D 的每列平均单元数为 9

逻辑数据字节数(列族)

逻辑数据字节数反映了列族占用的空间。此值约为返回表统计信息时读取列族中的所有数据所需的字节数。

使用 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

后续步骤