Todos os produtos
Search
Central de documentação

Simple Log Service:SQL Enhancement

Última atualização: Sep 22, 2026

O SQL Enhancement dimensiona de forma elástica os recursos de armazenamento e computação para acelerar consultas e análises no Simple Log Service, sem intervenção manual.

Como funciona

Contexto

O Simple Log Service desacopla o armazenamento da computação: a camada de armazenamento baseada em shard é responsável por armazenar e gerenciar dados, enquanto a camada de computação utiliza SQL para consultar e analisar dados.

Para melhorar o desempenho da análise, otimize uma ou ambas as camadas. As seções a seguir comparam as abordagens mais comuns.

image

Solução 1: Dividir um shard

Divida manualmente um split a shard para expandir a capacidade de armazenamento e aumentar indiretamente o throughput de computação.

Limitações:

  • Este método se aplica apenas a dados recém-gravados.

  • Shards ativos geram custos. Billing.

  • Uma única consulta tem limites de simultaneidade e volume de dados.

  • Divida ou mescle shards manualmente.

Solução 2: Dividir e conquistar consultas

Divida uma consulta grande em várias subconsultas e agrupe os resultados.

Limitações:

  • Requer manter a lógica de agregação secundária e o armazenamento intermediário. Use Scheduled SQL para isso.

  • Alterar as dimensões de análise exige reconstruir a lógica de agregação.

  • Gargalos de computação ainda podem ocorrer com volumes de dados muito grandes.

Solução 3: Usar o SQL Enhancement

O SQL Enhancement dimensiona dinamicamente os recursos de armazenamento e computação com base no volume de dados, proporcionando análises mais rápidas sem ajustes manuais.

image

Comparação

Solução 1: Dividir um shard

Solução 2: Dividir e conquistar consultas

Solução 3: Usar o SQL Enhancement

Isolamento de recursos

Recursos de armazenamento independentes, recursos de computação compartilhados

Recursos de armazenamento independentes, recursos de computação compartilhados

Recursos de armazenamento independentes e recursos de computação dedicados elásticos

Granularidade de dimensionamento

Dimensionamento da camada de armazenamento

Dimensionamento da camada de computação

Dimensionamento elástico para as camadas de armazenamento e computação

Sobrecarga de manutenção

Exige intervenção manual.

Requer dividir consultas grandes em subconsultas.

Agendamento totalmente automatizado.

Complexidade da consulta

Suporta SQL nativo.

Exige desenvolvimento personalizado.

Suporta SQL nativo.

Pré-requisitos

Procedimento

Ative o SQL Enhancement de uma das seguintes maneiras:

  • Ative para uma única consulta: aplica-se apenas à consulta atual no Logstore.

  • Ative por padrão: aplica-se a todas as consultas no Project, incluindo alertas e painéis.

Console

Ative para uma única consulta

  1. Acesse o Simple Log Service console.

  2. Na seção Projects, clique em um projeto desejado.

    image

  3. Na guia Log Storage > Logstores, clique em um logstore desejado.

    image

  4. Clique em image > SQL Enhancement.

Ative por padrão

  1. Acesse o Simple Log Service console.

  2. Na seção Projects, clique em um projeto desejado.

    image

  3. Clique em um ícone Project Overview.

    Clique em um ícone Home na barra de navegação superior para retornar à lista de Projects ou alternar entre Projects.

  4. Passe o mouse sobre CUs of SQL-dedicated Instance e clique em Settings.

  5. No painel Modify CUs of SQL-dedicated Instance, ative a opção Enable by Default e, em seguida, clique em OK.

API

Ative para uma única consulta

  • GetLogs (returns uncompressed results) - Query logs in a Logstore

    Defina um dos seguintes parâmetros.

    • O parâmetro powerSql: defina como true para o SQL Enhancement ou false (padrão) para o Standard SQL.

    • O parâmetro query: adicione set session parallel_sql=true; antes da sua instrução SQL. Por exemplo, * | select count(*) as pv torna-se * | set session parallel_sql=true; select count(*) as pv.

  • GetLogsV2 (returns compressed results) - Query log data in a Logstore

    Defina um dos seguintes parâmetros.

    • O parâmetro powerSql: defina como true para o SQL Enhancement ou false (padrão) para o Standard SQL.

    • O parâmetro query: adicione set session parallel_sql=true; antes da sua instrução SQL. Por exemplo, * | select count(*) as pv torna-se * | set session parallel_sql=true; select count(*) as pv.

Ative por padrão

Na operação Crie uma instância Dedicated SQL, defina useAsDefault=true para ativar o SQL Enhancement por padrão no Project.

SDK

Os exemplos a seguir usam o SDK do Java.

Pré-requisitos

Instale o SDK do Java

Ative para uma única consulta

  • Método GetLogs()

    Defina um dos seguintes parâmetros.

    • O parâmetro powerSql: defina como true para o SQL Enhancement ou false (padrão) para o Standard SQL.

    • O parâmetro query: adicione set session parallel_sql=true; antes da sua instrução SQL. Por exemplo, * | select count(*) as pv torna-se * | set session parallel_sql=true; select count(*) as pv.

    import com.aliyun.openservices.log.Client;
    import com.aliyun.openservices.log.exception.LogException;
    import com.aliyun.openservices.log.response.GetLogsResponse;
    import java.util.Date;
    public class CreateSqlInstance {
        public static void main(String[] args) throws LogException {
            // This example shows how to obtain an AccessKey ID and an AccessKey secret from environment variables.
            String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
            String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
            // The endpoint for Simple Log Service. This example uses the endpoint for the China (Hangzhou) region. Replace it with the actual endpoint.
            String host = "https://cn-hangzhou.log.aliyuncs.com";
            // Create a Simple Log Service client.
            Client client = new Client(host, accessId, accessKey);
            // The Project name.
            String projectName = "aliyun-project-test";
            // The Logstore name.
            String logstore = "request_log";
            // Specifies whether to enable SQL Enhancement by default. Default value: false.
            boolean useAsDefault = true;
            // The SQL query statement.
            String query = "* | select count(1)";
            // The maximum number of logs to return. This parameter is valid only when the query parameter is a search statement. Value range: 0 to 100. Default value: 100.
            int line = 3;
            // The line number from which to start the query. This parameter is valid only when the query parameter is a search statement. Default value: 0.
            int offset = 0;
            // Specifies whether to return logs in reverse chronological order of log timestamps, accurate to the minute.
            // true: Returns logs in reverse chronological order.
            // false (default): Returns logs in chronological order.
            boolean reverse = false;
            // Specifies whether to use SQL Enhancement.
            // true: Use SQL Enhancement.
            // false (default): Use Standard SQL.
            boolean powerSql = true;
            int from = (int) (new Date().getTime() / 1000 - 600);
            int to = (int) (new Date().getTime() / 1000);
            GetLogsResponse getLogsResponse = client.GetLogs(projectName, logstore, from, to, "", query, line, offset, reverse, powerSql);
            System.out.println(getLogsResponse.getCpuSec());
        }
    }

Ative por padrão

Defina boolean useAsDefault = true para ativar o SQL Enhancement por padrão no Project.

import com.aliyun.openservices.log.Client;
import com.aliyun.openservices.log.exception.LogException;
import com.aliyun.openservices.log.request.CreateOrUpdateSqlInstanceRequest;
public class CreateSqlInstance {
    public static void main(String[] args) throws LogException {
        // This example shows how to obtain an AccessKey ID and an AccessKey secret from environment variables.
        String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        // The Project name.
        String projectName = "aliyun-test-project";
        // The endpoint for Simple Log Service. This example uses the endpoint for the China (Hangzhou) region. Replace it with the actual endpoint.
        String host = "https://cn-hangzhou.log.aliyuncs.com";
        // Create a Simple Log Service client.
        Client client = new Client(host, accessId, accessKey);
        int cu = 100;
        boolean useAsDefault = true;
        client.createSqlInstance(new CreateOrUpdateSqlInstanceRequest(projectName, cu, useAsDefault));
    }
}

FAQ

  • Como verificar o tempo de CPU?

    Após executar uma consulta, passe o mouse sobre Analysis Results e visualize o tempo de CPU. O campo Consumed CPU Time no painel de estatísticas no canto superior direito exibe o tempo de CPU em segundos.

  • Custo de uma consulta Dedicated SQL

    O custo varia de acordo com o volume de dados e a complexidade da consulta.

    Instrução de consulta

    Volume de dados (linhas)

    Custo por execução (USD)

    * | select avg(double_0) from stress_s1_mil1

    4 bilhões

    0.004435

    * | select avg(double_0), sum(double_0), max(double_0), min(double_0), count(double_0) from stress_s1_mil1

    4 bilhões

    0.006504

    * | select avg(double_0), sum(double_1), max(double_2), min(double_3), count(double_4) from stress_s1_mil1

    4 bilhões

    0.013600

    * | select key_0 , avg(double_0) as pv from stress_s1_mil1 group by key_0 order by pv desc limit 1000

    4 bilhões

    0.011826

    * | select long_0, avg(double_0) as pv from stress_s1_mil1 group by long_0 order by pv desc limit 1000

    4 bilhões

    0.011087

    * | select long_0, long_1, avg(double_0) as pv from stress_s1_mil1 group by long_0,long_1 order by pv desc limit 1000

    300 milhões

    0.010791

    * | select avg(double_0) from stress_s1_mil1 where key_0='key_987'

    4 bilhões

    0.00007