Blocos mais usados

Para ajudar a resolver problemas de desempenho, o Bigtable permite identificar e observar blocos mais usados em um cluster. Esta página descreve os blocos mais usados, ensina como ver uma lista desses blocos e discute situações ao identificar os blocos mais usados. Antes de ler esta página, leia a Visão geral do Bigtable.

O nome do método usado para acessar uma lista de blocos mais usados varia de acordo com a linguagem usada. Para simplificar, neste documento o método é chamado pelo nome da API RPC Cloud Bigtable Admin, ListHotTablets. É possível ver uma lista de blocos mais usados usando o seguinte:

A identificação de blocos mais usados pode ajudar você nas seguintes tarefas:

Entender os blocos mais usados

A tabela do Bigtable é fragmentada em conjuntos de linhas contíguas, chamados de blocos. Essa fragmentação ajuda a balancear a carga de trabalho das consultas. Cada bloco está associado a um nó, e as operações nessas linhas são realizadas nele. Para otimizar o desempenho, os blocos são divididos ou movidos para um nó diferente, dependendo dos padrões de acesso. Com base nos padrões de acesso do usuário (operações de leitura, gravação e verificação), os blocos são equilibrados novamente nos nós. Para detalhes sobre balanceamento de carga, consulte Como o Bigtable otimiza seus dados ao longo do tempo.

Um bloco mais usado mostra um uso excessivo da CPU do nó, porque ele usa uma porcentagem desproporcionalmente grande de CPU em comparação com outros tablets. Esse desequilíbrio de uso de nós pode causar atrasos de latência e replicação.

Entre as causas mais frequentes de blocos mais usados estão os pontos de acesso, que ocorrem quando o aplicativo acessa com frequência linhas próximas umas das outras no bloco. Os pontos de acesso geralmente são o resultado de um projeto de esquema que não é otimizado para espalhar os padrões de acesso do seu aplicativo pelo bloco. Para saber como projetar as chaves de linha para que não ocorram pontos de acesso, consulte Práticas recomendadas de design do esquema.

Para ver uma lista de blocos mais usados, você precisa ter um papel que tenha a permissão bigtable.viewer.

Saída

O método ListHotTablets retorna os dados a seguir de um determinado cluster em uma instância.

  • Nome do bloco. O ID exclusivo atribuído pelo Bigtable ao bloco mais usado. Este campo não é exibido pela CLI gcloud.
  • Tabela. O ID da tabela associada ao bloco mais usado.
  • Uso da CPU. A utilização média da CPU do nó associado ao bloco mais usado, expressa em porcentagem, durante esse intervalo de um minuto. Essa porcentagem é a média da soma das CPUs de gravação e de leitura do horário de início ao término.
  • Horário de início. Horário de início do período de uso de blocos mais usados.
  • Horário de término. Horário de término do período de uso dos blocos mais usados.
  • Chave de início. Tecla de primeira linha no bloco mais usado.
  • Chave de fim. A última chave da linha no bloco mais usado. Um sufixo de \000 é anexado quando a chave de início e a de término são iguais, indicando que o tablet abrange uma única linha.

As chaves são classificadas lexicograficamente em um bloco. Portanto, qualquer chave entre a chave de início e de término está contida nesse bloco.

Os pontos de acesso são calculados em uma resolução de um minuto, e um bloco pode reaparecer na saída. Em outras palavras, um único bloco pode ser considerado quente por vários minutos.

Por padrão, o ListHotTablets pesquisa nas últimas 24 horas. Para pesquisar em um período específico, forneça um horário de início e de término.

O número máximo de blocos retornados é 50. Para mudar isso, forneça um tamanho de página.

O método retornará uma lista vazia se nenhum dos blocos no cluster for muito usado.

Exemplo usando a CLI gcloud

Antes de copiar este exemplo, instale a CLI gcloud.

Para conferir uma lista de blocos mais usados de um determinado cluster, execute o comando hot-tablets list no Cloud Shell ou na janela do terminal local.

  gcloud bigtable hot-tablets list CLUSTER_ID --instance INSTANCE_ID

Substitua:

  • CLUSTER_ID: identificador permanente do cluster
  • INSTANCE_ID: identificador permanente da instância

Se algum bloco do cluster for muito usado, o terminal exibirá uma saída semelhante a esta. Os blocos quentes de um cluster são listados em ordem decrescente de uso da CPU.

TABLE      CPU_USAGE  START_TIME                 END_TIME                   START_KEY            END_KEY
test-data  89.3       2021-12-14T01:19:57+00:00  2021-12-14T01:20:57+00:00  user29333893046…    user29333893046…
test-data  22.8       2021-12-14T01:04:59+00:00  2021-12-14T01:06:59+00:00  user29333893046…    user29345657428…
test-data  20.9       2021-12-14T01:18:56+00:00  2021-12-14T01:20:56+00:00  user54519105346…    user545293
test-data  16.5       2021-12-14T01:18:56+00:00  2021-12-14T01:20:56+00:00  user49196524328…    user49206

Casos de uso de dados de blocos mais usados

Identificar os blocos mais usados em um cluster pode ajudar você a solucionar problemas de desempenho. É possível usar o método ListHotTablets em combinação com outras ferramentas de monitoramento, como a ferramenta de diagnóstico Key Visualizer do Bigtable.

Identificação de chaves de linha com problemas

É possível usar ListHotTablets para identificar chaves e intervalos de linha específicos. Isso pode fornecer observabilidade em padrões de acesso que podem estar causando pontos de acesso.

Por exemplo, suponha que o esquema de chave de linha de uma tabela seja [user_id]#[event_timestamp], IDs de usuário e carimbos de data/hora separados por um símbolo de hash. Conseguir uma lista de blocos mais usados pode ajudar a determinar se IDs de usuário ou carimbos de data/hora de eventos específicos estão causando pontos de acesso. Ao identificar os padrões de acesso, é possível realizar outras ações, como reformular chaves de linha ou tabelas para distribuir o uso de maneira mais uniforme no espaço de chaves. Neste exemplo, se os IDs de usuário estão aumentando constantemente e causando pontos de acesso por esse motivo, é possível atribuir IDs de usuário em uma ordem diferente ou usar identificadores universalmente únicos (UUID).

Quando as chaves de linha de início e de término são iguais e a chave de linha de término é anexada com um sufixo \000, um bloco de linha única é criado. Quando esse tablet recebe uma quantidade desproporcionalmente grande de tráfego, ele gera pontos de acesso.

Observar pontos de acesso com granularidade por minuto

É possível usar uma lista de tablets quentes em combinação com os mapas de calor do Key Visualizer. Embora o Key Visualizer seja uma boa ferramenta para observar a visão geral dos padrões de acesso ao espaço de chave, o ListHotTablets oferece maior granularidade.

Depois de inspecionar os mapas de calor no Key Visualizer, é possível explorar ainda mais os pontos de acesso específicos. Como o Key Visualizer é executado durante um período de semanas, os dados dos pontos de acesso são agregados em intervalos de 15 minutos. Além disso, vários blocos podem ser combinados no mesmo espaço de chave do Key Visualizer.

Depois de usar o Key Visualizer para identificar o período em que os pontos de acesso ocorreram, execute ListHotTablets para aumentar a granularidade na chave e no espaço de tempo. Mais granularidade é especialmente útil para uso periódico. ListHotTablets pode identificar pontos de acesso de curta duração que o Key Visualizer não consegue identificar.

Como identificar tabelas problemáticas em um cluster

Como o Key Visualizer opera no nível da tabela, nem sempre é a melhor escolha para solucionar um problema em um cluster com várias tabelas. ListHotTablets opera no nível do cluster para que possa ser usado para identificar tabelas com alto uso de CPU e limitar o problema.

A seguir