Otimizando consultas usando a resposta de insights de consulta - Amazon Timestream

Para recursos semelhantes aos do Amazon Timestream para, considere o Amazon Timestream LiveAnalytics para InfluxDB. Ele oferece ingestão de dados simplificada e tempos de resposta de consulta de um dígito em milissegundos para análises em tempo real. Saiba mais aqui.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Otimizando consultas usando a resposta de insights de consulta

Digamos que você esteja usando o Amazon Timestream LiveAnalytics para monitorar o consumo de energia em vários locais. Imagine que você tenha duas tabelas em seu banco de dados chamadas raw-metrics e aggregate-metrics.

A tabela raw-metrics armazena dados de energia detalhados no nível do dispositivo e contém as seguintes colunas:

  • Timestamp

  • Estado, por exemplo, Washington

  • ID do dispositivo

  • Consumo de energia

Os dados dessa tabela são coletados e armazenados em uma minute-by-minute granularidade. A tabela usa State como CDPK.

A tabela aggregate-metrics armazena o resultado de uma consulta agendada para agregar os dados de consumo de energia em todos os dispositivos de hora em hora. A tabela contém as colunas a seguir:

  • Timestamp

  • Estado, por exemplo, Washington

  • Consumo de energia total

A tabela aggregate-metrics armazena esses dados em uma granularidade horária. A tabela usa State como CDPK.

Consultar o consumo de energia nas últimas 24 horas

Digamos que você queira extrair a energia total consumida em Washington nas últimas 24 horas. Para encontrar esses dados, você pode aproveitar os pontos fortes de ambas as tabelas: raw-metrics e aggregate-metrics. A tabela aggregate-metrics fornece dados de consumo de energia por hora nas últimas 23 horas, enquanto a tabela raw-metrics oferece dados granulares em minutos para a última hora. Ao consultar as duas tabelas, você pode obter uma visão completa e precisa do consumo de energia em Washington nas últimas 24 horas.

SELECT am.time, am.state, am.total_energy_consumption, rm.time, rm.state, rm.device_id, rm.energy_consumption FROM "metrics"."aggregate-metrics" am LEFT JOIN "metrics"."raw-metrics" rm ON am.state = rm.state WHERE rm.time >= ago(1h) and rm.time < now()

Esse exemplo de consulta é fornecido apenas para fins ilustrativos e pode não funcionar como está. O objetivo é demonstrar o conceito, mas talvez seja necessário modificá-lo para se adequar ao seu caso de uso ou ambiente específico.

Depois de executar essa consulta, você pode perceber que o tempo de resposta da consulta está mais lento do que o esperado. Para identificar a causa raiz desse problema de desempenho, você pode usar o atributo de insights de consulta para analisar o desempenho da consulta e otimizar sua execução.

O exemplo a seguir mostra a resposta do insight de consulta.

queryInsightsResponse={ QuerySpatialCoverage: { Max: { Value: 1.0, TableArn: arn:aws:timestream:us-east-1:123456789012:database/metrics/table/raw-metrics, PartitionKey: [State] } }, QueryTemporalRange: { Max: { Value:31540000000000000 //365 days, TableArn: arn:aws:timestream:us-east-1:123456789012:database/metrics/table/aggregate-metrics } }, QueryTableCount: 2, OutputRows: 83, OutputBytes: 590

A resposta do Insights de consulta fornece as seguintes informações:

  • Intervalo temporal: a consulta examinou um intervalo temporal excessivo de 365 dias para a tabela aggregate-metrics. Isso indica um uso ineficiente da filtragem temporal.

  • Cobertura espacial: a consulta examinou toda a faixa espacial (100%) da tabela raw-metrics. Isso sugere que a filtragem espacial não está sendo utilizada de forma eficaz.

Se sua consulta acessar mais de uma tabela, os insights de consulta fornecerão as métricas para a tabela com o padrão de acesso mais abaixo do ideal.

Otimizando a consulta para intervalo temporal

Com base na resposta dos insights de consulta, você pode otimizar a consulta para o intervalo de tempo como mostrado no exemplo a seguir.

SELECT am.time, am.state, am.total_energy_consumption, rm.time, rm.state, rm.device_id, rm.energy_consumption FROM "metrics"."aggregate-metrics" am LEFT JOIN "metrics"."raw-metrics" rm ON am.state = rm.state WHERE am.time >= ago(23h) and am.time < now() AND rm.time >= ago(1h) and rm.time < now() AND rm.state = 'Washington'

Se você executar o comando QueryInsights novamente, ele vai retornar a seguinte resposta.

queryInsightsResponse={ QuerySpatialCoverage: { Max: { Value: 1.0, TableArn: arn:aws:timestream:us-east-1:123456789012:database/metrics/table/aggregate-metrics, PartitionKey: [State] } }, QueryTemporalRange: { Max: { Value: 82800000000000 //23 hours, TableArn: arn:aws:timestream:us-east-1:123456789012:database/metrics/table/aggregate-metrics } }, QueryTableCount: 2, OutputRows: 83, OutputBytes: 590

Essa resposta mostra que a cobertura espacial da tabela aggregate-metrics ainda é de 100%, o que é ineficiente. A seção a seguir mostra como otimizar a consulta para cobertura espacial.

Otimizando a consulta para cobertura espacial

Com base na resposta dos insights de consulta, você pode otimizar a consulta para cobertura espacial como mostrado no exemplo a seguir.

SELECT am.time, am.state, am.total_energy_consumption, rm.time, rm.state, rm.device_id, rm.energy_consumption FROM "metrics"."aggregate-metrics" am LEFT JOIN "metrics"."raw-metrics" rm ON am.state = rm.state WHERE am.time >= ago(23h) and am.time < now() AND am.state ='Washington' AND rm.time >= ago(1h) and rm.time < now() AND rm.state = 'Washington'

Se você executar o comando QueryInsights novamente, ele vai retornar a seguinte resposta.

queryInsightsResponse={ QuerySpatialCoverage: { Max: { Value: 0.02, TableArn: arn:aws:timestream:us-east-1:123456789012:database/metrics/table/aggregate-metrics, PartitionKey: [State] } }, QueryTemporalRange: { Max: { Value: 82800000000000 //23 hours, TableArn: arn:aws:timestream:us-east-1:123456789012:database/metrics/table/aggregate-metrics } }, QueryTableCount: 2, OutputRows: 83, OutputBytes: 590

Melhoria do desempenho de consultas

Depois de otimizar a consulta, o Insights de consulta fornece as seguintes informações:

  • A redução temporal da tabela aggregate-metrics é de 23 horas. Isso indica que somente 23 horas do intervalo temporal são analisados.

  • A redução espacial da tabela aggregate-metrics é de 0,02. Isso indica que apenas 2% dos dados do intervalo espacial da tabela estão sendo analisados. A consulta analisa uma parte muito pequena das tabelas, levando a um desempenho rápido e à redução da utilização de recursos. A eficiência aprimorada da remoção indica que a consulta agora está otimizada para desempenho.