Estadísticas de tablas

Bigtable proporciona estadísticas de la tabla (metadatos sobre una tabla) que te brindan información resumida sobre la tabla, como la cantidad de filas o la cantidad promedio de celdas por columna.

En este documento, se describen las estadísticas de las tablas y se explica cómo obtenerlas con Google Cloud CLI. Antes de leer esta página, debes comprender el modelo de almacenamiento de Bigtable y familiarizarte con las prácticas recomendadas de diseño de esquemas y la recolección de elementos no utilizados.

Las estadísticas de la tabla proporcionan visibilidad en una tabla de Bigtable. Pueden ser útiles cuando solucionas problemas de rendimiento o almacenamiento, o cuando deseas determinar la fuente de los costos de almacenamiento. También pueden ayudarte a determinar si estás almacenando más datos de los necesarios.

Precisión esperada

Cuando recuperas las estadísticas de una tabla, los datos que obtienes son aproximados, ya que reflejan el estado de la tabla en uno de los clústeres de tu instancia a partir de la compactación más reciente.

Un conjunto completo de estadísticas de la tabla no estará disponible hasta después de la compactación inicial, que suele ocurrir aproximadamente una semana después de que se crea la tabla. Las estadísticas de la tabla son precisas a partir de la compactación más reciente, que puede ser de hace una semana.

Campos de estadísticas de tablas

Una solicitud de las estadísticas de una tabla muestra los siguientes campos. Los detalles y los ejemplos se encuentran en la siguiente sección.

Campo de estadísticas de la tabla Nombre de la API Descripción
Cantidad de filas row_count Es la cantidad de filas en la tabla. Para obtener más información, consulta Cantidad de filas.
Cantidad promedio de columnas por fila average_columns_per_row Es la cantidad promedio de columnas en cada fila de toda la tabla. Para obtener detalles y un ejemplo, consulta Cantidad promedio de columnas por fila .
Cantidad promedio de celdas por columna average_cells_per_column Es la cantidad promedio de celdas almacenadas en todas las columnas de todas las filas. Para obtener más detalles, consulta Cantidad promedio de celdas por columna.
Datos lógicos en bytes logical_data_bytes Es la cantidad de espacio que ocupa la tabla. Para obtener más información, consulta Datos lógicos en bytes.

Las estadísticas de la tabla también incluyen los siguientes campos para cada familia de columnas de la tabla.

Campo de estadísticas de la familia de columnas Nombre de la API Descripción
Cantidad promedio de columnas por fila average_columns_per_row Es la cantidad promedio de columnas por fila en la familia de columnas. Para obtener detalles y un ejemplo, consulta Cantidad promedio de columnas por fila.
Cantidad promedio de celdas por columna average_cells_per_column Es la cantidad de celdas en cada columna, promediada en todas las filas que tienen columnas en la familia de columnas. Para obtener detalles y un ejemplo, consulta Cantidad promedio de celdas por columna.
Datos lógicos en bytes logical_data_bytes Es la cantidad de espacio que ocupa la familia de columnas. Para obtener más información, consulta Datos lógicos en bytes.

Detalles del campo de estadísticas de la tabla

Cantidad de filas

El recuento de filas es la cantidad de filas en la tabla. Cada fila se identifica con su clave de fila.

Cantidad promedio de columnas por fila

Para obtener la cantidad promedio de columnas por fila de una tabla, Bigtable cuenta la cantidad de columnas en toda la tabla y divide ese valor por la cantidad de filas de la tabla.

Por ejemplo, considera la siguiente tabla. La primera fila tiene tres columnas y la segunda, dos.

Clave de fila Familia de columnas family-A Familia de columnas family-B
clave de fila 1 family-A:qualifier-W family-A:qualifier-X family-B:qualifier-Y
clave de fila 2 family-A:qualifier-W family-B:qualifier-Z

La tabla tiene cinco columnas y dos filas, por lo que la cantidad promedio de columnas por fila es 2.5.

Esta estadística de la tabla te brinda una idea general de si tu tabla es alta y estrecha (pocas columnas por fila) o corta y ancha (muchas columnas en cada fila).

Cantidad promedio de celdas por columna

Para obtener la cantidad promedio de celdas por columna de una tabla, Bigtable toma la cantidad total de celdas almacenadas en la tabla y la divide por la cantidad de columnas de la tabla.

Según el diseño de tu esquema y las políticas de recolección de elementos no utilizados, tu tabla puede tener varias celdas en una columna o solo una. La cantidad de celdas que puedes almacenar está limitada por los límites de tamaño de los datos que se describen en la página Cuotas y límites, en Tamaño de los datos en las tablas.

Si descubres que esta cantidad es mayor de lo esperado, examina tus reglas de recolección de basura para ver si estás reteniendo más celdas de las que necesitas. También puedes preguntar si se deben ajustar tu esquema y tus patrones de escritura.

Datos lógicos en bytes (tabla)

Este valor representa la cantidad aproximada de bytes que se necesitaría para leer toda la tabla. Esta estadística de la tabla te da una idea de cuántos bytes se almacenan en la tabla. Conocer los datos lógicos en bytes puede ayudarte a comprender el impacto de la compresión en la tabla. Por ejemplo, si el tamaño de la tabla que se informa en Cloud Monitoring es igual o mayor que los datos lógicos en bytes de la tabla, es posible que estés almacenando tus datos en un formato que no se comprime fácilmente.

Detalles del campo de estadísticas de la familia de columnas

Las estadísticas de una tabla incluyen los siguientes campos para cada familia de columnas de la tabla.

Cantidad promedio de columnas por fila

Para calcular este número, se toma la cantidad de columnas de la familia de columnas y se divide por la cantidad de filas de la tabla.

Por ejemplo, considera la siguiente tabla. La tabla tiene tres filas con columnas en las familias de columnas family-A y family-B.

Clave de fila Familia de columnas family-A Familia de columnas family-B
clave de fila 1 family-A:qualifier-W family-A:qualifier-X family-B:qualifier-Y
clave de fila 2 family-A:qualifier-W
clave de fila 3 family-A:qualifier-W family-A:qualifier-X family-B:qualifier-Y family-B:qualifier-Z

La familia de columnas family-A tiene un total de cinco columnas en la tabla. Dividido por tres filas, eso significa que la cantidad promedio de celdas por columna para family-A es 1.67 (redondeada a dos decimales).

La familia de columnas family-B tiene un total de tres columnas en la tabla. Dividido por tres filas, la cantidad promedio de columnas por fila para family-A es 1.

Cantidad promedio de celdas por columna

Para determinar la cantidad promedio de celdas por columna de una familia de columnas, Bigtable toma el recuento de todas las celdas de la familia de columnas en todas las filas de la tabla y lo divide por la cantidad de filas de la tabla.

A modo de ejemplo, considera las siguientes filas en la familia de columnas family-D.

Clave de fila Familia de columnas family-D
clave de fila 1 family-D:qualifier-W (3 celdas) family-D:qualifier-X (1 celda)
clave de fila 2 family-D:qualifier-X (10 celdas)
clave de fila 3 family-D:qualifier-W (7 celdas) family-D:qualifier-Y (6 celdas)

La cantidad de celdas en la familia de columnas es 3 + 1 + 10 + 7 + 6 = 27. Ese valor dividido por 3 (la cantidad de filas) significa que la familia de columnas family-D tiene un promedio de celdas por columna de 9.

Datos lógicos en bytes (familia de columnas)

Los datos lógicos en bytes reflejan el espacio que ocupa la familia de columnas. Este valor es aproximadamente la cantidad de bytes que necesitas para leer todos los datos de la familia de columnas en el momento en que se devolvieron las estadísticas de la tabla.

Ejemplo en el que se usa la CLI de gcloud

Para obtener estadísticas de una tabla llamada sample-table, usa el comando bigtable instances table describe:

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

Reemplaza lo siguiente:

  • TABLE_ID: el identificador permanente de la tabla
  • INSTANCE_ID: el identificador permanente de la instancia.

El resultado es similar a este:

  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

¿Qué sigue?