Analiza los patrones de acceso
Puedes analizar cómo tus aplicaciones leen y escriben datos en Bigtable de forma visual con la página Patrones de acceso en la Google Cloud console, o puedes llamar de manera programática a la API de Cloud Monitoring para consultar las métricas de patrones de acceso subyacentes.
Antes de leer este documento, revisa Lecturas, Escrituras y Supervisión.
Descripción general
Bigtable clasifica automáticamente las solicitudes de datos entrantes en tipos de consultas en Cloud Monitoring. El patrón de acceso de tu carga de trabajo es la combinación de diferentes tipos de consultas. Por ejemplo, tu patrón de acceso a la carga de trabajo puede consistir en tipos de consultas de lectura puntual, análisis breve y escritura puntual. Bigtable define 10 tipos de consultas distintos.
Mientras que la página Estadísticas del sistema muestra el uso general de recursos y Key Visualizer muestra cómo Bigtable distribuye el tráfico entre los rangos de claves de fila, la página Patrones de acceso proporciona un desglose centrado en las consultas de tu carga de trabajo en los niveles de clúster, tabla y perfil de app. Puedes usar la página Patrones de acceso para las siguientes tareas:
- Comprende tu carga de trabajo: Consulta la proporción y la tasa de los tipos de consultas de lectura, escritura y lectura y escritura para cada clúster, y agrupa las métricas por tabla o perfil de app.
- Detecta patrones de consultas ineficientes y soluciona problemas de latencia:
- Identifica las lecturas dispersas en las que Bigtable analiza muchas más filas o celdas de las que devuelve debido a filtros selectivos o celdas no recopiladas que esperan la recolección de elementos no utilizados
- Supervisa las búsquedas inversas, que son menos eficientes que las búsquedas hacia adelante.
- Compara los percentiles de latencia del servidor con las filas analizadas, las filas devueltas y las celdas vistas para identificar qué patrones de acceso contribuyen a los aumentos repentinos de latencia
- Identifica las cargas de trabajo para la adopción de funciones:
- Identifica tablas o perfiles de apps con grandes volúmenes de lecturas puntuales que puedan beneficiarse del nivel en memoria en la edición Enterprise Plus.
- Identifica las cargas de trabajo de análisis o lectura por lotes grandes que puedes aislar del tráfico de entrega con la computación sin servidores de Data Boost.
Limitaciones
Bigtable no clasifica las consultas de GoogleSQL para
Bigtable como patrones de acceso y no incluye esas
consultas en las métricas de patrones de acceso de filas, celdas o bytes. En los gráficos
Distribución de QPS, QPS y Latencia, las consultas en SQL y otras
solicitudes sin clasificar aparecen como QUERY_TYPE_UNKNOWN.
Roles obligatorios
Para obtener los permisos que necesitas para ver la página Patrones de acceso en la consola de Google Cloud , pídele a tu administrador que te otorgue los siguientes roles de IAM en el proyecto:
-
Visualiza los recursos de Bigtable:
- Usuario de Bigtable sin acceso a datos (
roles/bigtable.viewer) - Lector de Bigtable (
roles/bigtable.reader)
- Usuario de Bigtable sin acceso a datos (
-
Visualiza los datos de series temporales de Monitoring:
Visualizador de Monitoring (
roles/monitoring.viewer)
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para ver la página Patrones de acceso en la consola de Google Cloud . Para ver los permisos exactos que son necesarios, expande la sección Permisos necesarios:
Permisos necesarios
Se requieren los siguientes permisos para ver la página Patrones de acceso en la consola de Google Cloud :
-
Consulta los detalles de la instancia:
bigtable.instances.get -
Enumera clústeres, perfiles de apps y tablas:
bigtable.clusters.list, bigtable.appProfiles.list, bigtable.tables.list -
Métricas de supervisión de consultas:
monitoring.timeSeries.list
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Patrones de acceso
Cuando tu aplicación usa una biblioteca cliente de Bigtable, esta traduce tus llamadas de método en solicitudes a la API de Bigtable Data:
- Lecturas: Todos los métodos de lectura de la biblioteca cliente, incluidas las lecturas de una sola fila, como
readRow, las lecturas de varias filas, comoreadRowsobulkReadRowscon varias claves de fila, y las búsquedas de rango o prefijo de fila, comoreadRowscon un rango o prefijo, envían una solicitud a la API de datosReadRows. - Escrituras: Los métodos de escritura de la biblioteca cliente envían una solicitud
MutateRowpara escrituras simples y actualizaciones incrementales, una solicitudMutateRowspara escrituras por lotes, una solicitudCheckAndMutateRowpara escrituras condicionales o una solicitudReadModifyWriteRowpara adiciones e incrementos.
Bigtable clasifica cada solicitud a la API de datos entrante en el servidor después de que se completa, según los siguientes factores, en lugar de solo el nombre del método de la biblioteca cliente:
- Parámetros de solicitud: si la solicitud se orienta a una sola clave de fila,
varias claves de fila o un rango de filas, si la solicitud establece
reversedy qué filtros aplica - Estadísticas de ejecución: la cantidad de filas y celdas analizadas y mostradas, y la carga útil de bytes
Por ejemplo, cuando llamas a un método de lectura de una sola fila, como readRow, o llamas a
readRows con una sola clave de fila, Bigtable suele clasificar
la solicitud como una lectura de punto, que es apta para el
nivel en memoria. Sin embargo, si esa
lectura de una sola fila usa un filtro complejo o analiza una gran cantidad de celdas,
Bigtable podría clasificarla como una lectura dispersa, una lectura masiva o
una lectura de otro tipo. Por el contrario, si llamas a readRows para leer varias claves de fila o
analizar un rango de filas, Bigtable clasifica la solicitud como una lectura o un análisis masivos, que no son aptos para el nivel en memoria.
Orden de evaluación de lectura
Debido a que una sola solicitud a la API de datos de ReadRows puede coincidir con las características de
más de una categoría, Bigtable evalúa las solicitudes de lectura en el
siguiente orden y asigna el primer patrón de acceso coincidente:
- Lectura puntual
- Análisis corto (para análisis hacia adelante) o análisis corto inverso (cuando
reversedse establece entrue) - Análisis inverso (para cualquier solicitud de lectura restante en la que
reversedse establezca entrue) - Lectura dispersa (se evalúa antes de la lectura masiva para que Bigtable marque las lecturas de varias claves o los análisis hacia adelante más grandes con eliminación de filtros pesados como dispersos)
- Lectura masiva
- Otra lectura (para cualquier solicitud
ReadRowsrestante)
Definiciones de tipos de consultas
En la siguiente tabla, se describe cada categoría de patrón de acceso, su etiqueta
query_type correspondiente en Monitoring, las operaciones típicas de la biblioteca cliente
y el método subyacente de la API de datos (etiqueta de métrica method) al que se aplica,
y cómo Bigtable clasifica las solicitudes en esa categoría. Debido a que
los nombres de los métodos varían según el lenguaje de programación, en la tabla se enumeran los nombres de los métodos de la biblioteca cliente
representativos. Para ver muestras de código específicas de cada lenguaje, consulta
Ejemplos de lectura y
Ejemplos de escritura. Para obtener información sobre los filtros simples y complejos, consulta la sección Filtros simples frente a filtros complejos de este documento.
| Tipo de consulta | Etiqueta de métrica de query_type |
Operación del cliente y método de la API de datos | Criterios de clasificación |
|---|---|---|---|
| Lectura puntual | QUERY_TYPE_POINT_READ |
Lectura de una sola fila, como API de datos: |
Una lectura hacia adelante de una sola clave de fila que no usa ningún filtro o un filtro simple, en la que la cantidad de celdas analizadas y mostradas, y el tamaño total de la respuesta permanecen dentro de los límites pequeños de una sola fila. |
| Análisis breve | QUERY_TYPE_SHORT_SCAN |
Análisis de rango o prefijo de fila, como API de datos: |
Un análisis hacia adelante de un solo rango de filas contiguas que no usa ningún filtro o un filtro simple, en el que la cantidad de filas y celdas analizadas y mostradas, y el tamaño total de la respuesta permanecen dentro de límites pequeños. |
| Escaneo corto inverso | QUERY_TYPE_REVERSE_SHORT_SCAN |
Análisis inverso, como
API de datos: |
Es un análisis inverso de un solo rango de filas contiguas que no usa ningún filtro o un filtro simple y se mantiene dentro de los mismos límites de fila, celda y bytes que un análisis corto. |
| Búsqueda inversa | QUERY_TYPE_REVERSE_SCAN |
Análisis inverso, como API de datos: |
Cualquier lectura inversa que no califique como un análisis corto inverso, por ejemplo, un análisis inverso que exceda los límites de filas, celdas o bytes de un análisis corto, especifica claves de fila individuales, analiza varios rangos de filas o usa un filtro complejo. |
| Lectura dispersa | QUERY_TYPE_SPARSE_READ |
Lectura filtrada o análisis
en celdas no recopiladas, con API de datos: |
Cualquier solicitud de lectura hacia adelante (evaluada después de la lectura puntual, el análisis corto y el análisis inverso) en la que Bigtable analiza significativamente más filas o celdas de las que devuelve debido a la eliminación de filtros o a las celdas no recopiladas que esperan la recolección de elementos no utilizados. |
| Lectura masiva | QUERY_TYPE_BULK_READ |
Lectura de varias filas, como API de datos: |
Es una lectura hacia adelante que especifica una o más claves de fila sin filtro o con un filtro simple, supera los límites de lectura de puntos (por ejemplo, solicita varias claves de fila o lee una sola fila grande) y no califica como una lectura dispersa. |
| Otras lecturas | QUERY_TYPE_OTHER_READ |
Análisis de rango grande,
análisis de varios rangos o lectura filtrada
con API de datos: |
Cualquier solicitud |
| Escritura puntual | QUERY_TYPE_POINT_WRITE |
Escritura simple,
actualización incremental o
escritura por lotes pequeña, como
API de datos: |
Una solicitud |
| Otra escritura | QUERY_TYPE_OTHER_WRITE |
Escritura por lotes o escritura simple de gran tamaño, como API de datos: |
Cualquier solicitud |
| Lectura y escritura | QUERY_TYPE_READ_WRITE |
Escritura condicional o
agregado, como
API de datos: |
Cualquier solicitud de escritura condicional ( |
En las métricas de recuento de solicitudes y latencia, Bigtable etiqueta
las solicitudes no clasificadas, como las consultas de GoogleSQL para Bigtable, como QUERY_TYPE_UNKNOWN.
Filtros simples frente a filtros complejos
Para calificar como lectura de punto, análisis corto, análisis corto inverso o lectura masiva, una
solicitud de ReadRows no debe usar ningún filtro o un filtro simple.
Bigtable clasifica un filtro como simple si solo usa
los siguientes tipos de filtros, ya sea solos o combinados en un filtro chain
limitado. Para obtener más información, consulta Cadena.
- Sin filtro (
FILTER_NOT_SET) pass_all_filteroblock_all_filtercolumn_range_filter,column_qualifier_regex_filterofamily_name_regex_filtercells_per_column_limit_filter,cells_per_row_limit_filterocells_per_row_offset_filtertimestamp_range_filter
Bigtable trata cualquier solicitud ReadRows como si usara un filtro complejo
si la solicitud usa un tipo de filtro que no está en la lista anterior, como los
siguientes, o si encadena una gran cantidad de filtros:
value_regex_filtervalue_range_filterrow_key_regex_filterrow_sample_filterinterleaveconditionsinkstrip_value_transformerapply_label_transformer
Bigtable clasifica estas solicitudes como un análisis inverso si reversed
es true y, de lo contrario, como una lectura dispersa (si analiza significativamente más filas
o celdas de las que devuelve) o como otra lectura.
Visualiza patrones de acceso
Puedes ver la página Patrones de acceso en la consola de Google Cloud a nivel de instancia o de clúster.
Visualiza los patrones de acceso de una instancia
En la consola de Google Cloud , abre la lista de instancias de Bigtable.
Haz clic en la instancia cuyas métricas quieres ver.
En el panel de navegación, en Observabilidad, haz clic en Patrones de acceso.
En la lista Clúster, selecciona el clúster cuyos patrones de acceso deseas inspeccionar. De forma predeterminada, la consola de Google Cloud selecciona el primer clúster de la instancia.
En la lista Agrupar por, elige cómo desglosar los gráficos:
- Ninguno: Es la opción predeterminada que desglosa todos los gráficos por patrón de acceso,
como
QUERY_TYPE_POINT_READ. - Perfil de la app: Desglosa todos los gráficos por ID de perfil de la aplicación y patrón de acceso.
- Tabla: Desglosa todos los gráficos por ID de tabla y patrón de acceso.
- Ninguno: Es la opción predeterminada que desglosa todos los gráficos por patrón de acceso,
como
Opcional: Para cambiar el intervalo de tiempo o activar o desactivar la actualización automática, usa el selector de período.
Visualiza los patrones de acceso de un clúster
En la consola de Google Cloud , abre la lista de instancias de Bigtable.
Haz clic en la instancia cuyas métricas quieres ver.
Se abrirá la página de descripción general de la instancia.
En la tabla de clústeres, haz clic en el ID del clúster.
En el panel de navegación, haz clic en Patrones de acceso. En la página, se muestran las métricas del clúster seleccionado.
En la lista Agrupar por, elige cómo desglosar los gráficos:
- Ninguno: Es la opción predeterminada que desglosa todos los gráficos por patrón de acceso,
como
QUERY_TYPE_POINT_READ. - Perfil de la app: Desglosa todos los gráficos por ID de perfil de la aplicación y patrón de acceso.
- Tabla: Desglosa todos los gráficos por ID de tabla y patrón de acceso.
- Ninguno: Es la opción predeterminada que desglosa todos los gráficos por patrón de acceso,
como
Opcional: Para cambiar el intervalo de tiempo o activar o desactivar la actualización automática, usa el selector de período.
Gráficos y métricas en la página de patrones de acceso
En la página Patrones de acceso, se proporcionan gráficos para las siguientes métricas:
| Métrica | Disponible para | Descripción |
|---|---|---|
| Distribución de QPS | Clústeres Tablas Perfiles de aplicación |
La proporción y la tasa promedio de solicitudes por segundo (QPS)
agregadas en todo el período seleccionado para el clúster, desglosadas
por |
| Latencia | Clústeres Tablas Perfiles de aplicación |
Es la latencia de la solicitud del servidor a lo largo del tiempo, desglosada por
|
| QPS | Clústeres Tablas Perfiles de aplicación |
Es la tasa de solicitudes por segundo a lo largo del tiempo, desglosada por
|
| Filas mostradas | Clústeres Tablas Perfiles de aplicación |
Es la cantidad de filas que Bigtable devuelve al cliente por segundo para las solicitudes de lectura y de lectura y escritura después de aplicar los filtros. |
| Filas analizadas | Clústeres Tablas Perfiles de aplicación |
Es la cantidad de filas que Bigtable lee por segundo mientras procesa solicitudes de lectura y de lectura y escritura, antes de aplicar filtros. Comparar las filas analizadas con las filas devueltas te ayuda a identificar filtros de lectura ineficientes. |
| Filas modificadas | Clústeres Tablas Perfiles de aplicación |
Es la cantidad de filas que se modifican por segundo con solicitudes de escritura y de lectura y escritura. |
| Celdas vistas | Clústeres Tablas Perfiles de aplicación |
Es la cantidad de celdas que Bigtable inspecciona por segundo durante las solicitudes de lectura y de lectura y escritura antes de aplicar filtros, incluidas las celdas que filtra o que esperan la recolección de elementos no utilizados. |
| Celdas enviadas | Clústeres Tablas Perfiles de aplicación |
Es la cantidad de celdas que Bigtable devuelve al cliente por segundo después de aplicar los filtros. Comparar las Celdas vistas con las Celdas enviadas te ayuda a identificar las solicitudes de lectura que inspeccionan muchas celdas por cada celda que se devuelve. |
| Bytes enviados | Clústeres Tablas Perfiles de aplicación |
Es la cantidad de bytes de datos de filas codificados que se devuelven por segundo. |
También puedes consultar estas métricas de manera programática con la
API de Cloud Monitoring, verlas en el Explorador de métricas o agregarlas a paneles
personalizados. Cada métrica de bigtable.googleapis.com/query_type/* en el
recurso supervisado bigtable_table incluye las siguientes etiquetas:
- Etiquetas de recursos:
project_id,instance,clusterytable - Etiquetas de métricas:
query_type,app_profileymethod
Para obtener más información sobre cómo consultar las métricas de Bigtable en Monitoring, consulta Supervisa con Monitoring y Métricas.
Optimiza las cargas de trabajo según los patrones de acceso
Puedes usar las métricas de la página Patrones de acceso para tomar las siguientes decisiones:
- Habilita el nivel en memoria para lecturas de puntos de baja latencia: Si los gráficos Distribución de QPS, QPS y Latencia muestran un gran volumen de solicitudes
QUERY_TYPE_POINT_READen tablas o perfiles de apps con objetivos estrictos de latencia de lectura, considera habilitar el nivel en memoria que está disponible en la edición Enterprise Plus. Agrupa los gráficos por Tabla o Perfil de app para identificar qué tablas y cargas de trabajo se beneficiarán más. - Aísla los análisis grandes y las lecturas por lotes con Data Boost: Si observas
volúmenes altos o aumentos repentinos periódicos de solicitudes
QUERY_TYPE_BULK_READoQUERY_TYPE_OTHER_READque comparten un clúster con tráfico de entrega sensible a la latencia, agrupa por perfil de app para identificar la fuente de los análisis. Enruta las lecturas de lotes, informes o análisis a través de un perfil de app dedicado configurado para usar la computación sin servidores de Data Boost, de modo que los análisis grandes no compitan con los nodos de entrega por los recursos de CPU. - Reduce la sobrecarga de filtros y ajusta la recolección de elementos no utilizados: Si ves una tasa alta
de solicitudes
QUERY_TYPE_SPARSE_READ, si las filas analizadas son mucho más altas que las filas mostradas o si las celdas vistas son mucho más altas que las celdas enviadas, tus solicitudes de lectura analizan datos que Bigtable no devuelve al cliente. Para mejorar la eficiencia de lectura, haz lo siguiente:- Limita los rangos o prefijos de clave de fila en la solicitud de lectura en lugar de depender de filtros de valores o expresiones regulares para descartar filas.
- Incluye un filtro de límite de celdas, como
cells_per_column_limit_filter, cuando tu aplicación solo necesite las versiones de celdas más recientes. Para obtener más información, consulta Límite de celdas por columna. - Revisa tus políticas de recolección de elementos no utilizados para que las versiones de celdas vencidas o antiguas no se acumulen y ralenticen los análisis. Para obtener más información, consulta Descripción general de la recolección de elementos no utilizados.
- Reemplaza las búsquedas inversas por búsquedas directas: si observas solicitudes
QUERY_TYPE_REVERSE_SCANoQUERY_TYPE_REVERSE_SHORT_SCANfrecuentes con latencia elevada, considera diseñar tus claves de fila para que tu aplicación pueda emitir búsquedas directas. Para obtener más información, consulta Prácticas recomendadas para el diseño de esquemas.