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:
- Identificação de chaves de linha com problemas
- Observar pontos de acesso com granularidade por minuto
- Como identificar tabelas problemáticas em um cluster
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 clusterINSTANCE_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
- Entenda o desempenho do Bigtable.
- Saiba mais sobre o Bigtable Monitoring.
- Assista a um tutorial sobre a comparação de desempenho.