表统计信息
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-A
和 family-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