Estadísticas de tablas

Bigtable proporciona estadísticas de tablas, es decir, 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 para el diseño de esquemas y la recolección de elementos no utilizados.

Las estadísticas de las tablas proporcionan observabilidad en una tabla de Bigtable. Pueden ser útiles para solucionar problemas relacionados con el rendimiento o el almacenamiento, o cuando deseas determinar la fuente de los costos de almacenamiento. También pueden ayudarte a determinar si almacenas más datos de los que necesitas.

Precisión esperada

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

Un conjunto completo de estadísticas de la tabla no está disponible hasta después de la compactación inicial, que, por lo general, ocurre alrededor de una semana después de crear la tabla. Las estadísticas de la tabla son precisas a partir de la compactación más reciente, que podría ser de hace una semana.

Campos de estadísticas de la tabla

Una solicitud de las estadísticas de la tabla de una tabla muestra los siguientes campos. Encontrarás detalles y ejemplos en la siguiente sección.

Campo de estadísticas de la tabla Nombre de la API Descripción
Cantidad de filas row_count La cantidad de filas en la tabla. Para obtener más información, consulta Recuento de filas.
Cantidad promedio de columnas por fila average_columns_per_row La cantidad promedio de columnas en cada fila para toda la tabla. Para obtener más detalles y un ejemplo, consulta Cantidad promedio de columnas por fila.
Número promedio de celdas por columna average_cells_per_column Es la cantidad promedio de celdas almacenadas en todas las columnas en todas las filas. Para obtener más información, 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 La cantidad promedio de columnas por fila en la familia de columnas. Para obtener más detalles y un ejemplo, consulta Cantidad promedio de columnas por fila.
Número promedio de celdas por columna average_cells_per_column El número de celdas en cada columna, promediado por todas las filas que tienen columnas en la familia de columnas. Para obtener más detalles y un ejemplo, consulta Cantidad promedio de celdas por columna.
Datos lógicos en bytes logical_data_bytes 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 por 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 en la tabla.

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

Clave de fila Familia de columnas A Familia de columnas 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 el número promedio de columnas por fila es 2.5.

Las estadísticas de la tabla te dan una idea general de si tu tabla es larga y estrecha (pocas columnas por fila) o corta y ancha (muchas columnas en cada fila).

Número promedio de celdas por columna

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

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

Si descubres que este número es mayor de lo que esperabas, examina las reglas de recolección de elementos no utilizados para ver si estás reteniendo más celdas de las necesarias. También puedes preguntar si se deben ajustar tus patrones de esquema y escritura.

Datos lógicos en bytes (tabla)

Este valor representa la cantidad aproximada de bytes que se necesitarían 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 para la tabla, es posible que estés almacenando tus datos en un formato que no se comprime con facilidad.

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

Este número se calcula dividiendo el número de columnas en la familia de columnas por el número de filas en la tabla.

Como 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 A Familia de columnas 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, significa que el número promedio de celdas por columna para family-A es 1.67 (redondeado aquí 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.

Número 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 en la tabla.

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

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

El recuento 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 mostraron 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 al siguiente:

  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?