要获得与亚马逊 Timestream 类似的功能 LiveAnalytics,可以考虑适用于 InfluxDB 的亚马逊 Timestream。适用于 InfluxDB 的 Amazon Timestream 提供简化的数据摄取和个位数毫秒级的查询响应时间,以实现实时分析。点击此处了解更多信息。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
查询
以下是使用适用于 LiveAnalytics 的 Amazon Timestream 进行查询的建议最佳实践。
-
仅包含查询所必需的度量和维度名称。添加额外的列会增加数据扫描次数,从而影响查询的性能。
-
将查询部署到生产环境之前,建议您查看查询见解,以确保空间和时间修剪达到最佳效果。有关更多信息,请参阅 使用查询见解优化 Amazon Timestream 中的查询。
-
在可能的情况下,使用 SELECT 子句和 WHERE 子句中适用的内置聚合和标量函数,将数据计算推送到适用于 LiveAnalytics 的 Timestream,以提升查询性能并降低成本。请参阅 SELECT 和 聚合函数。
-
如有可能,请使用近似函数。例如,使用 APPROX_DISTINCT 而非 COUNT(DISTINCT column_name),以优化查询性能并降低查询成本。请参阅 聚合函数。
-
使用 CASE 表达式执行复杂聚合,而不是从同一表多次选择。请参阅 CASE 语句。
-
如有可能,请在查询的 WHERE 子句中包含时间范围。这可以优化查询性能并降低成本。例如,如果仅需数据集中最后一小时的数据,请添加时间谓词,例如 time > ago(1h)。请参阅 SELECT 和 间隔和持续时间。
-
当查询访问表中度量的子集时,请务必在查询的 WHERE 子句中包含度量名称。
-
在查询的 WHERE 子句中比较维度和度量时,尽可能使用等号运算符。维度和度量名称上的相等谓词可提升查询性能并降低查询成本。
-
尽可能避免使用 WHERE 子句中的函数,以优化成本。
-
避免多次使用 LIKE 子句。相反,在需要筛选字符串列上的多个值时,请使用正则表达式。请参阅 正则表达式函数。
-
在查询的 GROUP BY 子句中,仅使用必要的列。
-
如果查询结果需按特定顺序排列,请在最外层查询的 ORDER BY 子句中明确指定该顺序。如果查询结果不需要排序,请避免使用 ORDER BY 子句,以提升查询性能。
-
如果查询仅需前 N 行,请使用 LIMIT 子句。
-
如果使用 ORDER BY 子句查看前 N 个值或后 N 个值,请使用 LIMIT 子句以降低查询成本。
-
使用返回响应中的分页令牌,以检索查询结果。有关更多信息,请参阅查询。
-
如果已开始运行查询,但发现该查询无法返回您要查找的结果,请取消查询以节省成本。有关更多信息,请参阅 CancelQuery。
-
如果应用程序遇到节流,请继续以相同的速率向适用于 LiveAnalytics 的 Amazon Timestream 发送数据,使适用于 LiveAnalytics 的 Amazon Timestream 能够自动扩缩,以满足应用程序的查询吞吐量需求。
-
如果应用程序的查询并发要求超过适用于 LiveAnalytics 的 Timestream 默认限制,请联系 Amazon Web Services 支持 以提高限制。