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.
Tópicos
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.