Analisar padrões de acesso
É possível analisar visualmente como seus aplicativos leem e gravam dados no Bigtable usando a página Padrões de acesso no Google Cloud consoleou chamar de modo programático a API Cloud Monitoring para consultar as métricas de padrão de acesso subjacentes.
Antes de ler este documento, consulte Leituras, Gravações e Monitoramento.
Visão geral
O Bigtable classifica automaticamente as solicitações de dados recebidas em tipos de consulta no Cloud Monitoring. O padrão de acesso da carga de trabalho é a combinação de diferentes tipos de consulta. Por exemplo, o padrão de acesso da carga de trabalho pode consistir em tipos de consulta de leitura de ponto, verificação curta e gravação de ponto. O Bigtable define 10 tipos de consulta distintos.
Enquanto a página Insights do sistema mostra a utilização geral de recursos e o Key Visualizer mostra como o Bigtable distribui o tráfego entre intervalos de chaves de linha, a página Padrões de acesso fornece um detalhamento centrado em consultas da sua carga de trabalho nos níveis de cluster, tabela e perfil do app. Use a página Padrões de acesso para as seguintes tarefas:
- Entender sua carga de trabalho: confira a proporção e a taxa de tipos de consulta de leitura, gravação e leitura/gravação para cada cluster e agrupe as métricas por tabela ou perfil de app.
- Detectar padrões de consulta ineficientes e resolver problemas de latência:
- Identificar leituras esparsas em que o Bigtable verifica significativamente mais linhas ou células do que retorna devido a filtros seletivos ou células não coletadas aguardando a coleta de lixo.
- Monitorar as verificações reversas, que são menos eficientes do que as futuras.
- Compare os percentis de latência do lado do servidor com as linhas verificadas, as linhas retornadas e as células vistas para identificar quais padrões de acesso contribuem para picos de latência.
- Identificar cargas de trabalho para adoção de recursos:
- Identifique tabelas ou perfis de app com grandes volumes de leituras de pontos que podem se beneficiar do nível na memória na edição Enterprise Plus.
- Identifique cargas de trabalho de leitura em lote ou de verificação grande que podem ser isoladas do tráfego de veiculação usando a computação sem servidor do Data Boost.
Limitações
O Bigtable não classifica as consultas do GoogleSQL para
Bigtable como padrões de acesso e não inclui essas
consultas nas métricas de padrão de acesso de linha, célula ou byte. Nos gráficos de distribuição de QPS, QPS e latência, as consultas SQL e outras solicitações não classificadas aparecem como QUERY_TYPE_UNKNOWN.
Funções exigidas
Para receber as permissões necessárias para visualizar a página Padrões de acesso no console do Google Cloud , peça ao administrador para conceder a você os seguintes papéis do IAM no projeto:
-
Ver recursos do Bigtable:
- Leitor do Bigtable (
roles/bigtable.viewer) - Leitor do Bigtable (
roles/bigtable.reader)
- Leitor do Bigtable (
-
Acessar dados de séries temporais do Monitoring:
Leitor do Monitoring (
roles/monitoring.viewer)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esses papéis predefinidos contêm as permissões necessárias para acessar a página Padrões de acesso no console do Google Cloud . Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As permissões a seguir são necessárias para visualizar a página Padrões de acesso no console do Google Cloud :
-
Ver detalhes da instância:
bigtable.instances.get -
Liste clusters, perfis de aplicativos e tabelas:
bigtable.clusters.list, bigtable.appProfiles.list, bigtable.tables.list -
Métricas do Monitoring de consultas:
monitoring.timeSeries.list
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Padrões de acesso
Quando o aplicativo usa uma biblioteca de cliente do Bigtable, a biblioteca de cliente traduz as chamadas de método em solicitações de API da API Data do Bigtable:
- Leituras: todos os métodos de leitura da biblioteca de cliente, incluindo
leituras de linha única, como
readRow, leituras de várias linhas, comoreadRowsoubulkReadRowscom várias chaves de linha, e verificações de intervalo ou prefixo de linha, comoreadRowscom um intervalo ou prefixo, enviam uma solicitação de APIs DataReadRows. - Gravações: os métodos de gravação da biblioteca de cliente enviam uma solicitação
MutateRowpara gravações simples e atualizações incrementais, uma solicitaçãoMutateRowspara gravações em lote, uma solicitaçãoCheckAndMutateRowpara gravações condicionais ou uma solicitaçãoReadModifyWriteRowpara adições e incrementos.
O Bigtable classifica cada solicitação de API de dados recebida no servidor depois que ela é concluída, com base nos seguintes fatores, e não apenas no nome do método da biblioteca de cliente:
- Parâmetros de solicitação: se a solicitação segmenta uma única chave de linha,
várias chaves de linha ou um intervalo de linhas, se a solicitação define
reversede quais filtros ela aplica. - Estatísticas de execução: o número de linhas e células verificadas e retornadas, além do payload de bytes.
Por exemplo, quando você chama um método de leitura de linha única, como readRow, ou chama
readRows com uma única chave de linha, o Bigtable normalmente classifica
a solicitação como uma leitura de ponto, que é qualificada para o
nível na memória. No entanto, se essa leitura de linha única usar um filtro complexo ou verificar um grande número de células, o Bigtable poderá classificá-la como uma leitura esparsa, em massa ou outra leitura. Por outro lado, se você chamar readRows para ler várias chaves de linha ou
verificar um intervalo de linhas, o Bigtable vai classificar a solicitação como uma leitura ou verificação
em massa, que não é qualificada para o nível na memória.
Ordem de avaliação de leitura
Como uma única solicitação da API Data do ReadRows pode corresponder às características de
mais de uma categoria, o Bigtable avalia as solicitações de leitura na
seguinte ordem e atribui o primeiro padrão de acesso correspondente:
- Leitura de ponto
- Verificação curta (para verificações diretas) ou verificação curta reversa (quando
reversedestá definido comotrue) - Verificação reversa (para qualquer solicitação de leitura restante em que
reversedesteja definido comotrue) - Leitura esparsa (avaliada antes da leitura em massa para que o Bigtable sinalize leituras de várias chaves ou verificações de encaminhamento maiores com eliminação de filtro pesado como esparsas)
- Leitura em massa
- Outra leitura (para qualquer solicitação
ReadRowsrestante)
Definições de tipo de consulta
A tabela a seguir descreve cada categoria de padrão de acesso, o rótulo query_type correspondente no Monitoring, as operações típicas da biblioteca de cliente e o método da API Data (rótulo de métrica method) a que ela se aplica, além de como o Bigtable classifica as solicitações nessa categoria. Como
os nomes de métodos variam de acordo com a linguagem de programação, a tabela lista nomes de métodos de biblioteca de cliente
representativos. Para exemplos de código específicos de linguagem, consulte
Exemplos de leitura e
Exemplos de gravação. Para informações sobre filtros simples e
complexos, consulte a seção Filtros simples x filtros complexos
deste documento.
| Tipo de consulta | Rótulo de métrica query_type |
Operação do cliente e método da API Data | Critérios de classificação |
|---|---|---|---|
| Leitura de ponto | QUERY_TYPE_POINT_READ |
Leitura de linha única, como
API Data: |
Uma leitura direta de uma única chave de linha que não usa filtro ou usa um filtro simples, em que o número de células verificadas e retornadas e o tamanho total da resposta permanecem dentro de limites pequenos de uma única linha. |
| Verificação curta | QUERY_TYPE_SHORT_SCAN |
Verificação de intervalo de linhas ou prefixo, como API Data: |
Uma verificação direta de um único intervalo de linhas contíguas que não usa filtro ou usa um filtro simples, em que o número de linhas e células verificadas e retornadas e o tamanho total da resposta permanecem dentro de limites pequenos. |
| Leitura curta reversa | QUERY_TYPE_REVERSE_SHORT_SCAN |
Verificação reversa, como
API Data: |
Uma verificação reversa de um único intervalo de linhas contíguas que usa Sem filtro ou um filtro simples e permanece dentro dos mesmos limites de linha, célula e byte de uma verificação curta. |
| Verificação reversa | QUERY_TYPE_REVERSE_SCAN |
Verificação reversa, como
API Data: |
Qualquer leitura reversa que não se qualifique como uma verificação curta reversa, por exemplo, uma verificação reversa que exceda os limites de linha, célula ou byte de verificação curta, especifique chaves de linha individuais, verifique vários intervalos de linha ou use um filtro complexo. |
| Leitura esparsa | QUERY_TYPE_SPARSE_READ |
Leitura filtrada ou verificação
em células não coletadas, usando API Data: |
Qualquer solicitação de leitura direta (avaliada após a leitura de ponto, a verificação curta e a verificação reversa) em que o Bigtable verifica significativamente mais linhas ou células do que retorna devido à eliminação de filtros ou células não coletadas aguardando a coleta de lixo. |
| Leitura em massa | QUERY_TYPE_BULK_READ |
Leitura de várias linhas, como API Data: |
Uma leitura direta que especifica uma ou mais chaves de linha sem filtro ou com um filtro simples, excede os limites de leitura de ponto (por exemplo, solicita várias chaves de linha ou lê uma única linha grande) e não se qualifica como uma leitura esparsa. |
| Outra leitura | QUERY_TYPE_OTHER_READ |
Verificação de intervalo grande,
verificação de vários
intervalos ou leitura filtrada
usando API Data: |
Qualquer solicitação |
| Gravação de ponto | QUERY_TYPE_POINT_WRITE |
Gravação simples,
atualização incremental ou
pequena gravação em lote, como
API Data: |
Uma solicitação |
| Outra gravação | QUERY_TYPE_OTHER_WRITE |
Gravação em lote ou gravação simples grande, como API Data: |
Qualquer solicitação |
| Leitura/gravação | QUERY_TYPE_READ_WRITE |
Gravação ou
adição condicional, como
API Data: |
Qualquer solicitação de gravação condicional ( |
Nas métricas de contagem de solicitações e latência, o Bigtable rotula
solicitações não classificadas, como consultas do GoogleSQL para Bigtable, como QUERY_TYPE_UNKNOWN.
Filtros simples x filtros complexos
Para se qualificar como uma leitura de ponto, verificação curta, verificação curta reversa ou leitura em massa, uma solicitação ReadRows não pode usar nenhum filtro ou um filtro simples.
O Bigtable classifica um filtro como simples se ele usar apenas
os seguintes tipos de filtro, sozinhos ou combinados em um filtro chain
limitado. Para mais informações, consulte Cadeia.
- Sem filtro (
FILTER_NOT_SET) pass_all_filteroublock_all_filtercolumn_range_filter,column_qualifier_regex_filteroufamily_name_regex_filtercells_per_column_limit_filter,cells_per_row_limit_filteroucells_per_row_offset_filtertimestamp_range_filter
O Bigtable trata qualquer solicitação ReadRows como se estivesse usando um filtro complexo
se a solicitação usar um tipo de filtro que não esteja na lista anterior, como os
seguintes, ou se encadear um grande número de filtros:
value_regex_filtervalue_range_filterrow_key_regex_filterrow_sample_filterinterleaveconditionsinkstrip_value_transformerapply_label_transformer
O Bigtable classifica essas solicitações como uma verificação reversa se reversed
for true. Caso contrário, como uma leitura esparsa (se verificar significativamente mais linhas
ou células do que retorna) ou outra leitura.
Ver padrões de acesso de visualização
É possível acessar a página Padrões de acesso no console do Google Cloud no nível da instância ou do cluster.
Ver padrões de acesso de visualização de uma instância
No console do Google Cloud , abra a lista de instâncias do Bigtable.
Clique na instância com as métricas que você quer exibir.
No painel de navegação, em Observabilidade, clique em Padrões de acesso.
Na lista Cluster, selecione o cluster com os padrões de acesso que você quer inspecionar. Por padrão, o console do Google Cloud seleciona o primeiro cluster na instância.
Na lista Agrupar por, escolha como detalhar os gráficos:
- Nenhum: opção padrão que divide todos os gráficos por padrão de acesso,
como
QUERY_TYPE_POINT_READ. - Perfil do app: divide todos os gráficos por ID do perfil do aplicativo e padrão de acesso.
- Tabela: detalha todos os gráficos por ID da tabela e padrão de acesso.
- Nenhum: opção padrão que divide todos os gráficos por padrão de acesso,
como
Opcional: para mudar o período ou ativar/desativar a atualização automática, use o seletor de período.
Ver padrões de acesso de visualização de um cluster
No console do Google Cloud , abra a lista de instâncias do Bigtable.
Clique na instância com as métricas que você quer exibir.
A página de visão geral da instância é aberta.
Na tabela de clusters, clique no ID do cluster.
No painel de navegação, clique em Padrões de acesso. A página mostra as métricas do cluster selecionado.
Na lista Agrupar por, escolha como detalhar os gráficos:
- Nenhum: opção padrão que divide todos os gráficos por padrão de acesso,
como
QUERY_TYPE_POINT_READ. - Perfil do app: divide todos os gráficos por ID do perfil do aplicativo e padrão de acesso.
- Tabela: detalha todos os gráficos por ID da tabela e padrão de acesso.
- Nenhum: opção padrão que divide todos os gráficos por padrão de acesso,
como
Opcional: para mudar o período ou ativar/desativar a atualização automática, use o seletor de período.
Gráficos e métricas na página de padrões de acesso
A página Padrões de acesso fornece gráficos para as seguintes métricas:
| Métrica | Disponível para | Descrição |
|---|---|---|
| Distribuição de QPS | Clusters Tabelas Perfis de aplicativo |
A proporção e a taxa média de solicitações por segundo (QPS)
agregadas em todo o período selecionado para o cluster, detalhadas
por |
| Latência | Clusters Tabelas Perfis de aplicativo |
A latência da solicitação do lado do servidor ao longo do tempo, detalhada por
|
| QPS | Clusters Tabelas Perfis de aplicativo |
A taxa de solicitações por segundo ao longo do tempo, detalhada por
|
| Linhas retornadas | Clusters Tabelas Perfis de aplicativo |
O número de linhas que o Bigtable retorna ao cliente por segundo para solicitações de leitura e leitura/gravação após a aplicação de filtros. |
| Linhas verificadas | Clusters Tabelas Perfis de aplicativo |
O número de linhas que o Bigtable lê por segundo ao processar solicitações de leitura e leitura/gravação, antes de aplicar filtros. A comparação de Linhas verificadas com Linhas retornadas ajuda a identificar filtros de leitura ineficientes. |
| Linhas modificadas | Clusters Tabelas Perfis de aplicativo |
O número de linhas modificadas por segundo por solicitações de gravação e leitura/gravação. |
| Células visualizadas | Clusters Tabelas Perfis de aplicativo |
O número de células que o Bigtable inspeciona por segundo durante solicitações de leitura e leitura/gravação antes de aplicar filtros, incluindo células que ele filtra ou que estão aguardando a coleta de lixo. |
| Células enviadas | Clusters Tabelas Perfis de aplicativo |
O número de células que o Bigtable retorna ao cliente por segundo após a aplicação de filtros. Comparar Células vistas com Células enviadas ajuda a identificar solicitações de leitura que inspecionam muitas células para cada célula retornada. |
| Bytes enviados | Clusters Tabelas Perfis de aplicativo |
O número de bytes de dados de linha codificados retornados por segundo. |
Também é possível consultar essas métricas de maneira programática usando a
API Cloud Monitoring, visualizá-las no Metrics Explorer ou adicioná-las a painéis
personalizados. Cada métrica bigtable.googleapis.com/query_type/* no recurso monitorado bigtable_table inclui os seguintes rótulos:
- Rótulos de recursos:
project_id,instance,clusteretable - Rótulos de métricas:
query_type,app_profileemethod
Para mais informações sobre como consultar métricas do Bigtable no Monitoring, consulte Monitorar com o Monitoring e Métricas.
Otimizar cargas de trabalho com base em padrões de acesso
Use as métricas na página Padrões de acesso para tomar as seguintes decisões:
- Ative o nível na memória para leituras de pontos de baixa latência: se os gráficos de distribuição de QPS, QPS e latência mostrarem um alto volume de solicitações
QUERY_TYPE_POINT_READem tabelas ou perfis de app com metas de latência de leitura estritas, considere ativar o nível na memória disponível na edição Enterprise Plus. Agrupe os gráficos por Tabela ou Perfil do app para identificar quais tabelas e cargas de trabalho serão mais beneficiadas. - Isole verificações grandes e leituras em lote com o Data Boost: se você observar
volumes altos ou picos periódicos de solicitações
QUERY_TYPE_BULK_READouQUERY_TYPE_OTHER_READque compartilham um cluster com tráfego de veiculação sensível à latência, agrupe por Perfil do app para identificar a origem das verificações. Encaminhe leituras de lote, relatórios ou análises por um perfil de app dedicado configurado para usar a computação sem servidor do Data Boost, de modo que as verificações grandes não concorram com os nós de exibição por recursos de CPU. - Reduza a sobrecarga do filtro e ajuste a coleta de lixo: se você notar uma alta
taxa de solicitações
QUERY_TYPE_SPARSE_READ, se as linhas verificadas forem muito maiores do que as linhas retornadas ou se as células vistas forem muito maiores do que as células enviadas, suas solicitações de leitura estarão verificando dados que o Bigtable não retorna ao cliente. Para melhorar a eficiência de leitura, faça o seguinte:- Restrinja os intervalos ou prefixos de chave de linha na solicitação de leitura em vez de depender de filtros de valor ou de expressão regular para descartar linhas.
- Inclua um filtro de limite de células, como
cells_per_column_limit_filter, quando o aplicativo precisar apenas das versões mais recentes das células. Para mais informações, consulte Limite de células por coluna. - Revise suas políticas de coleta de lixo para que versões de células expiradas ou obsoletas não se acumulem e deixem as verificações mais lentas. Para mais informações, consulte Visão geral da coleta de lixo.
- Substitua as verificações reversas por verificações diretas: se você observar solicitações frequentes de
QUERY_TYPE_REVERSE_SCANouQUERY_TYPE_REVERSE_SHORT_SCANcom latência elevada, considere projetar as chaves de linha para que o aplicativo possa emitir verificações diretas. Para mais informações, consulte Práticas recomendadas de design do esquema.
A seguir
- Monitorar o desempenho da instância com os insights do sistema
- Analisar padrões de uso de chaves de linha com o Key Visualizer
- Resolver problemas de latência