Estadísticas de tablas
Bigtable proporciona estadísticas de tablas (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 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 tablas proporcionan observabilidad en una tabla de Bigtable. Pueden ser útiles cuando solucionas problemas de rendimiento o almacenamiento, o cuando quieres determinar el origen de los costos de almacenamiento. También pueden ayudarte a determinar si estás almacenando 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 tu tabla en uno de los clústeres de tu instancia a partir de la compactación más reciente.
No hay un conjunto completo de estadísticas de tablas disponible hasta después de la compactación inicial, que suele ocurrir alrededor de 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 haber sido hace una semana.
Campos de estadísticas de tablas
Una solicitud de estadísticas de una tabla devuelve los siguientes campos. Los detalles y ejemplos se encuentran en la siguiente sección.
| Campo de estadísticas de tablas | Nombre de la API | Descripción |
|---|---|---|
| Cantidad de filas | row_count |
La cantidad de filas de la tabla. Para obtener más detalles, consulta Recuento 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 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 detalles, 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 |
La cantidad de espacio que ocupa la familia de columnas. Para obtener más detalles, consulta Datos lógicos en bytes. |
Detalles de los campos de estadísticas de tablas
Cantidad de filas
El recuento de filas es la cantidad de filas de la tabla. Cada fila se identifica con su clave de fila.
Cantidad promedio de columnas por fila
Para llegar a la cantidad promedio de columnas por fila de una tabla, Bigtable cuenta la cantidad de columnas de 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 tiene 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 tabla te da una idea general de si tu tabla es alta y estrecha (pocas columnas por fila) o baja 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 del esquema y las políticas de recolección de elementos no utilizados, la tabla puede tener varias celdas en una columna o solo una. La cantidad de celdas que puedes almacenar está sujeta a 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 dentro de las tablas.
Si descubres que este número es más alto de lo que esperas, examina tus reglas de recolección de elementos no utilizados para ver si estás reteniendo más celdas de las que necesitas. También puedes preguntar si se deben ajustar el esquema y los patrones de escritura.
Datos lógicos en bytes (tabla)
Este valor representa la cantidad aproximada de bytes sin comprimir que se necesitarían para leer toda la tabla. Esta estadística de tabla te da una idea del volumen sin procesar de datos almacenados en la tabla.
Compara el tamaño lógico con el uso del almacenamiento
Bigtable comprime los datos de forma automática cuando los escribe en el disco. Como resultado, el tamaño de la tabla que se informa como Uso del almacenamiento (bytes) en Cloud Monitoring y en la página de resumen del clúster refleja el almacenamiento comprimido físico en el disco, en lugar del tamaño de los datos lógicos sin comprimir. La facturación del almacenamiento también se basa en este tamaño físico comprimido.
Conocer ambos valores te ayuda a evaluar tu proporción de compresión efectiva:
Ahorros de compresión: Dividir tus datos lógicos en bytes por el uso de almacenamiento en bytes proporciona una estimación de tu proporción de compresión. Por ejemplo, si tu tabla tiene 10 TB de datos lógicos y consume 2.5 TB de uso de almacenamiento en el disco, tu relación de compresión es de aproximadamente 4:1.
Datos sin comprimir o precomprimidos: Si el uso del almacenamiento en Cloud Monitoring es igual o mayor que tus datos lógicos en bytes, es posible que tus datos se almacenen en un formato que no se comprima con facilidad (como datos que se encriptaron o comprimieron antes de escribirse en Bigtable) o que tu tabla contenga valores de celda superiores a 1 MiB, que Bigtable no comprime automáticamente. Para obtener más información sobre cómo Bigtable comprime los datos, consulta Compresión de datos.
Datos reemplazados o borrados que esperan la compactación: Las mutaciones nuevas se comprimen en cuanto se escriben en el disco, no durante la compactación. Sin embargo, cuando reemplazas o borras datos, las versiones de celdas anteriores y los marcadores de eliminación (tombstones) permanecen en el disco y se consideran en el uso del almacenamiento hasta que la siguiente compactación los quite de forma permanente. Además, las estadísticas de la tabla reflejan la tabla a partir de la compactación más reciente, mientras que el uso del almacenamiento en Cloud Monitoring se actualiza de forma continua a medida que se escriben datos nuevos.
Detalles de los campos 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 (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.
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.
Por 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) | |
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 sin comprimir que ocupa la familia de columnas. Este valor es, aproximadamente, la cantidad de bytes sin comprimir que se necesitan para leer todos los datos de la familia de columnas en el momento en que se devolvieron las estadísticas de la tabla. Al igual que los bytes lógicos a nivel de tabla, este valor no refleja el ahorro de almacenamiento de la compresión de datos en el disco.
Ejemplo en el que se usa gcloud CLI
Para obtener las 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 tablaINSTANCE_ID: el identificador permanente de la instancia.
El resultado es similar a lo 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