O SQL Enhancement dimensiona automaticamente os recursos de armazenamento e computação para acelerar consultas e análises no Simple Log Service.
Como funciona
Contexto
O Simple Log Service desacopla o armazenamento da computação: a camada de armazenamento baseada em shard gerencia os dados, enquanto a camada de computação utiliza SQL para consultas e análises.
Para melhorar o desempenho da análise, otimize ambas as camadas. As seções a seguir comparam as soluções mais comuns.
Solução 1: Dividir um shard
Divida manualmente um shard para expandir a capacidade de armazenamento e aumentar o throughput de computação.
Limitações:
Este método aplica-se apenas a dados gravados recentemente.
Shards ativos geram custos. Consulte Faturamento.
Uma única consulta tem limites de concorrência e volume de dados.
Divida ou mescle shards manualmente.
Solução 2: Consultas do tipo dividir para conquistar
Divida uma consulta grande em várias subconsultas e agregue os resultados.
Limitações:
Exige manutenção de lógica de agregação secundária e armazenamento intermediário. Utilize o Scheduled SQL para essa finalidade.
Alterar dimensões de análise requer 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 automaticamente os recursos de armazenamento e computação com base no volume de dados para acelerar a análise.
|
Comparação |
Solução 1: Dividir um shard |
Solução 2: Consultas do tipo dividir para conquistar |
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 |
Requer intervenção manual. |
Exige divisão de consultas grandes em subconsultas. |
Agendamento totalmente automatizado. |
|
Complexidade da consulta |
Suporta SQL nativo. |
Requer desenvolvimento personalizado. |
Suporta SQL nativo. |
Pré-requisitos
Logstore Standard criado. Para mais informações, consulte Criar um Logstore básico.
Logs coletados. Para mais informações, consulte Coleta de dados.
Índices configurados. Para mais informações, consulte Configurar índices.
Procedimento
Ative o SQL Enhancement de uma das seguintes formas:
Ativar para uma única consulta: aplica-se apenas à consulta atual no Logstore.
Ativar por padrão: aplica-se a todas as consultas no Project, incluindo alertas e painéis.
Console
Ativar para uma única consulta
Faça login no console do Simple Log Service.
-
Na seção Projects, clique em no projeto desejado.

-
Na aba , clique em no logstore desejado.

Clique em .
Ativar por padrão
Faça login no console do Simple Log Service.
-
Na seção Projects, clique em no projeto desejado.

-
Clique em no ícone
.Clique em no ícone Home na barra de navegação superior para retornar à lista de Projects ou alternar entre projetos.
Passe o mouse sobre CUs of SQL-dedicated Instance e clique em Settings.
No painel Modify CUs of SQL-dedicated Instance, ative a chave Enable by Default e clique em OK.
API
Ativar para uma única consulta
-
GetLogs (retorna resultados não compactados) - Consultar logs em um Logstore
Configure um dos parâmetros a seguir.
Parâmetro
powerSql: defina como true para SQL Enhancement ou false (padrão) para SQL Standard.Parâmetro
query: adicioneset session parallel_sql=true;antes da instrução SQL. Por exemplo,* | select count(*) as pvtorna-se* | set session parallel_sql=true; select count(*) as pv.
-
GetLogsV2 (retorna resultados compactados) - Consultar dados de log em um Logstore
Configure um dos parâmetros a seguir.
Parâmetro
powerSql: defina como true para SQL Enhancement ou false (padrão) para SQL Standard.Parâmetro
query: adicioneset session parallel_sql=true;antes da instrução SQL. Por exemplo,* | select count(*) as pvtorna-se* | set session parallel_sql=true; select count(*) as pv.
Ativar por padrão
Na operação Criar uma instância de Dedicated SQL, defina useAsDefault=true para ativar o SQL Enhancement por padrão no Project.
SDK
Os exemplos a seguir utilizam o SDK para Java.
Pré-requisitos
Ativar para uma única consulta
-
Método GetLogs()
Configure um dos parâmetros a seguir.
Parâmetro
powerSql: defina como true para SQL Enhancement ou false (padrão) para SQL Standard.Parâmetro
query: adicioneset session parallel_sql=true;antes da instrução SQL. Por exemplo,* | select count(*) as pvtorna-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()); } }
Ativar 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));
}
}
Perguntas frequentes
-
Como verificar o tempo de CPU?
Após executar uma consulta, passe o mouse sobre Analysis Results para visualizar o tempo de CPU. O campo Consumed CPU Time, no painel de estatísticas superior direito, exibe o tempo de CPU consumido em segundos.
-
Custo de uma consulta Dedicated SQL
O custo varia conforme o volume de dados e a complexidade da consulta. A tabela a seguir apresenta alguns exemplos.
Instrução de consulta
Volume de dados (linhas)
Custo por execução (USD)
* | select avg(double_0) from stress_s1_mil14 bilhões
0.004435
* | select avg(double_0), sum(double_0), max(double_0), min(double_0), count(double_0) from stress_s1_mil14 bilhões
0.006504
* | select avg(double_0), sum(double_1), max(double_2), min(double_3), count(double_4) from stress_s1_mil14 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 10004 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 10004 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 1000300 milhões
0.010791
* | select avg(double_0) from stress_s1_mil1 where key_0='key_987'4 bilhões
0.00007
> SQL Enhancement