Todos os produtos
Search
Central de documentação

Simple Log Service:Acelerar a consulta e análise de logs

Última atualização: Jun 23, 2026

Aplique os métodos a seguir para acelerar a consulta e análise de logs no Simple Log Service.

Aumentar o número de shards ou ativar o Dedicated SQL

  • Aumente o número de shards para melhorar os recursos de leitura e gravação de dados. No entanto, esse método entra em vigor apenas para dados incrementais. Shards são recursos computacionais. A velocidade de cálculo aumenta com base no número de shards. Verifique se o número de entradas de dados varridas por shard não excede 50 milhões. Divida um shard para aumentar o número de shards. Para mais informações, consulte Dividir shard. Para mais informações sobre o faturamento de shards, consulte Exemplos de faturamento de shards ativos com base nos métodos de faturamento.

  • O Dedicated SQL oferece suporte a maior concorrência para análise e a varreduras de dados maiores.

Reduzir o intervalo de tempo e o volume de dados

  • Um intervalo de tempo longo desacelera a operação de consulta.

    Para acelerar a velocidade do cálculo, reduza o intervalo de tempo da operação de consulta.

  • Um grande volume de dados desacelera a operação de consulta.

    Reduza o volume de dados da operação de consulta.

Repetir consultas

Se os resultados da consulta forem imprecisos, repita a consulta dos dados. A cada operação de consulta, o mecanismo de aceleração subjacente analisa os resultados já existentes. Após repetir as consultas, o sistema retorna resultados mais precisos.

Otimizar instruções analíticas

Uma instrução de consulta demorada apresenta as seguintes características:

  • A cláusula GROUP BY agrupa os resultados da análise com base em uma ou mais colunas do tipo string.

  • A cláusula GROUP BY agrupa os resultados da análise com base em mais de cinco colunas.

  • A instrução inclui operações que geram strings.

Use os seguintes métodos para otimizar instruções analíticas:

  • Não inclua operações que geram strings.

    Por exemplo, usar a função date_format para gerar um timestamp em um formato específico reduz a eficiência da consulta. Use a função date_trunc ou time_series para gerar um timestamp. Exemplo:

    * | select date_format(from_unixtime(__time__) , '%H_%i') as t, count(1) group by t
  • Não agrupe os resultados da análise com base em uma ou mais colunas do tipo string.

    Por exemplo, ao usar a cláusula GROUP BY para agrupar os resultados da análise com base em colunas do tipo string, a carga de cálculo de hash é elevada. A carga de cálculo de hash representa mais de 50% da carga total de cálculo. Exemplos:

    • Instrução de consulta eficiente

      * | select count(1) as pv , from_unixtime(__time__-__time__%3600) as time group by __time__-__time__%3600
    • Instrução de consulta ineficiente

      * | select count(1) as pv , date_trunc('hour',__time__) as time group by time

    As duas instruções de consulta calculam o número de logs por hora. A segunda instrução converte os timestamps em strings e agrupa os resultados da análise com base nas strings. Por exemplo, 2021-12-12 00:00:00 é um timestamp no formato de string. A primeira instrução obtém os timestamps de hora em hora, agrupa os resultados da análise com base nos timestamps e depois converte-os em strings.

  • Para agrupar os resultados da análise com base em várias colunas, posicione o campo com maior número de valores antes do campo com menor número de valores.

    Por exemplo, se o número de valores de um campo específico é 13 e o número de valores do campo uid é 100 milhões, posicione o campo uid antes do campo específico na cláusula GROUP BY. Exemplos:

    • Instrução de consulta eficiente

      * | select province,uid,count(1) group by uid,province
    • Instrução de consulta ineficiente

       * | select province,uid,count(1) group by province,uid
  • Use funções aproximadas.

    Funções aproximadas oferecem melhor desempenho do que funções exatas. Essas funções sacrificam a precisão em favor da velocidade. Exemplos:

    • Instrução de consulta eficiente

       * |select approx_distinct(ip)
    • Instrução de consulta ineficiente

       * | select count(distinct(ip))
  • Use múltiplas funções de agregação distinct em cenários de baixa cardinalidade.

    Múltiplas operações distinct exigem copiar os dados brutos várias vezes, o que gera alta sobrecarga de rede. Para otimizar, ative o switch de sessão enable_opt_distinct_aggs. Por exemplo:

    • Instrução eficiente de consulta e análise

      * | select count(1), count(distinct projectId), count(distinct logstore) from log
    • Instrução ineficiente de consulta e análise

      * | set session enable_opt_distinct_aggs=true; select count(1), count(distinct projectId), count(distinct logstore) from log
  • Especifique apenas as colunas desejadas em uma instrução analítica. Não consulte todas as colunas.

    Em uma instrução analítica, consulte apenas as colunas necessárias para o cálculo. Para consultar todas as colunas, use a sintaxe de pesquisa. Exemplos:

    • Instrução de consulta eficiente

      * |select a,b c 
    • Instrução de consulta ineficiente

      * |select *
  • Coloque as colunas não usadas para agrupamento em uma função de agregação.

    Por exemplo, os valores das colunas userid e username devem corresponder entre si. Basta especificar a coluna userid na cláusula GROUP BY para agrupar os dados. Exemplos:

    • Instrução de consulta eficiente

       * | select userid, arbitrary(username), count(1) group by userid 
    • Instrução de consulta ineficiente

      * | select userid, username, count(1) group by userid,username
  • Não use a cláusula IN.

    Não use a cláusula IN em uma instrução analítica. Use a cláusula OR em uma instrução de pesquisa. Exemplos:

    • Instruções rápidas de consulta e análise

      key: a or key: b or key: c | select count(1)
    • Instrução de consulta ineficiente

      * | select count(1) where key in ('a','b')