Todos los productos
Search
Centro de documentos

Simple Log Service:Acelerar la consulta y el análisis de registros

Última actualización: Sep 02, 2026

Aplique los siguientes métodos para acelerar la consulta y el análisis de registros en Simple Log Service.

Aumentar el número de shards o habilitar Dedicated SQL

  • Aumente el número de shards para mejorar las capacidades de lectura y escritura de datos. No obstante, este método solo surte efecto en datos incrementales. Los shards son recursos de cómputo; la velocidad de cálculo aumenta según la cantidad de shards disponibles. Asegúrese de que el número de entradas de datos escaneadas por shard no exceda los 50 millones. Puede dividir un shard para incrementar su cantidad total. Para obtener más información, consulte Split shard. Para más detalles sobre la facturación de shards, consulte Billing examples of active shards based on billing methods.

  • Dedicated SQL admite una mayor concurrencia para el análisis y escaneos de datos más amplios.

Reducir el intervalo de tiempo y el volumen de datos

  • Un intervalo de tiempo prolongado ralentiza la operación de consulta.

    Si desea acelerar la velocidad de cálculo, reduzca el intervalo de tiempo de la consulta.

  • Un gran volumen de datos ralentiza la operación de consulta.

    Reduzca el volumen de datos de la operación de consulta.

Repetir consultas

Si los resultados de la consulta no son precisos, puede repetir la operación. Cada vez que se ejecuta una consulta, el mecanismo de aceleración subyacente analiza los resultados existentes. Al repetir la consulta, el sistema puede devolver resultados más precisos.

Optimizar instrucciones analíticas

Una instrucción de consulta que consume mucho tiempo suele presentar las siguientes características:

  • Uso de la cláusula GROUP BY para agrupar resultados de análisis basándose en una o más columnas de tipo cadena.

  • Uso de la cláusula GROUP BY para agrupar resultados de análisis basándose en más de cinco columnas.

  • Inclusión de operaciones que generan cadenas dentro de la instrucción.

Puede utilizar los siguientes métodos para optimizar las instrucciones analíticas:

  • Evite incluir operaciones que generen cadenas.

    Por ejemplo, si utiliza la función date_format para generar una marca de tiempo en un formato específico, la eficiencia de la consulta será baja. Utilice las funciones date_trunc o time_series para generar marcas de tiempo. Ejemplo:

    * | select date_format(from_unixtime(__time__) , '%H_%i') as t, count(1) group by t
  • No agrupe los resultados del análisis basándose en una o más columnas de tipo cadena.

    Por ejemplo, al usar la cláusula GROUP BY con columnas de tipo cadena, la carga de trabajo para el cálculo de hash se vuelve pesada. Dicho cálculo representa más del 50% de la carga total de procesamiento. Ejemplos:

    • Instrucción de consulta eficiente

      * | select count(1) as pv , from_unixtime(__time__-__time__%3600) as time group by __time__-__time__%3600
    • Instrucción de consulta ineficiente

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

    Ambas instrucciones calculan la cantidad de registros por hora. En la segunda, las marcas de tiempo se convierten a cadenas y luego se agrupan los resultados según dichas cadenas (por ejemplo, "2021-12-12 00:00:00" es una marca de tiempo en formato de cadena). En la primera instrucción, se obtienen las marcas de tiempo redondeadas a la hora, se agrupan los resultados basándose en esos valores numéricos y posteriormente se convierten a cadenas.

  • Si necesita agrupar resultados de análisis por múltiples columnas, coloque primero el campo que tenga mayor cantidad de valores únicos antes que aquel con menos valores.

    Por ejemplo, si un campo específico tiene 13 valores distintos y el campo uid tiene 100 millones, se recomienda colocar el campo uid antes del otro en la cláusula GROUP BY. Ejemplos:

    • Instrucción de consulta eficiente

      * | select province,uid,count(1) group by uid,province
    • Instrucción de consulta ineficiente

       * | select province,uid,count(1) group by province,uid
  • Utilice funciones aproximadas.

    Las funciones aproximadas ofrecen mejor rendimiento que las funciones exactas, ya que sacrifican precisión a cambio de velocidad. Ejemplos:

    • Instrucción de consulta eficiente

       * |select approx_distinct(ip)
    • Instrucción de consulta ineficiente

       * | select count(distinct(ip))
  • Especifique únicamente las columnas necesarias en la instrucción analítica. Evite consultar todas las columnas.

    En una instrucción analítica, consulte solo las columnas requeridas para el cálculo. Si necesita obtener todas las columnas, utilice la sintaxis de búsqueda. Ejemplos:

    • Instrucción de consulta eficiente

      * |select a,b c 
    • Instrucción de consulta ineficiente

      * |select *
  • Incluya las columnas que no se usan para agrupación dentro de una función de agregación.

    Por ejemplo, si los valores de las columnas userid y username deben coincidir, basta con especificar la columna userid en la cláusula GROUP BY para agrupar los datos. Ejemplos:

    • Instrucción de consulta eficiente

       * | select userid, arbitrary(username), count(1) group by userid 
    • Instrucción de consulta ineficiente

      * | select userid, username, count(1) group by userid,username
  • Evite usar la cláusula IN.

    No utilice la cláusula IN en una instrucción analítica. En su lugar, emplee la cláusula OR dentro de una instrucción de búsqueda. Ejemplos:

    • Instrucciones de consulta y análisis rápidas

      key: a or key: b or key: c | select count(1)
    • Instrucción de consulta ineficiente

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