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.
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.
|
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
Um logstore Standard criado. Para mais informações, consulte Crie um Logstore básico.
Logs coletados. Para obter mais detalhes, veja Data collection.
Índices configurados. Para saber mais, acesse Configure indexes.
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
Acesse o Simple Log Service console.
-
Na seção Projects, clique em um projeto desejado.

-
Na guia , clique em um logstore desejado.

Clique em .
Ative por padrão
Acesse o Simple Log Service console.
-
Na seção Projects, clique em um projeto desejado.

-
Clique em um ícone
.Clique em um ícone Home na barra de navegação superior para retornar à lista de Projects ou alternar entre Projects.
Passe o mouse sobre CUs of SQL-dedicated Instance e clique em Settings.
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: adicioneset session parallel_sql=true;antes da sua instrução SQL. Por exemplo,* | select count(*) as pvtorna-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: adicioneset session parallel_sql=true;antes da sua instrução SQL. Por exemplo,* | select count(*) as pvtorna-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
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: adicioneset session parallel_sql=true;antes da sua 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()); } }
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_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