我目前正在努力查询存储在分区表中的数据块(每个日期的分区)
数据如下:
az group deployment create -g MyResourceGroup --template-file azuredeploy.json \
--parameters @params.json --parameters https://mysite/params.json --parameters MyValue=This MyArray=@array.json
我有数百个日期分区,每个日期有数百万行。
现在,例如,如果我要查询产品ID为1和2的总订单(为期2周)并按日期分组(以按日期显示在图表中),则数据库必须转到2周分区并为其获取数据。
当产品数量很多或所需时间较长时,该过程可能会花费很长时间。
我已阅读到AWS Redshift适用于此类任务。我正在考虑将分区表(每个日期的汇总分析)转移到该技术,但是我想知道是否真的应该这样做,以使那些查询运行得更快。
谢谢!
答案 0 :(得分:3)
根据您的用例,Redshift对您来说确实是一个不错的选择。 为了获得Redshift的最佳性能,设置适当的分发和排序键非常重要。在您的情况下,“日期”列应为分发键,而“产品ID”应为排序键。另一个重要说明,请勿对“日期”和“ productid”列进行编码。 您应该获得更好的性能。
答案 1 :(得分:3)
如果您在传统SQL数据库方面苦苦挣扎,那么Amazon Redshift当然是一个选择。它可以处理数十亿行的表。
这将涉及将数据从Amazon S3加载到Redshift。这将使Redshift能够优化数据存储方式,从而使查询速度更快。
或者,您可以考虑使用 Amazon Athena ,它可以直接从Amazon S3查询数据。它可以理解被划分到单独目录中的数据(例如,基于日期)。
答案 2 :(得分:0)
您正在使用哪个版本的PostgreSQL?
您正在使用本机分区还是继承分区trigger-based
?
最新版本的postgresql改进了分区管理。
答案 3 :(得分:0)
考虑您的情况 Amazon Redshift 是一个不错的选择, Amazon Athena 也是如此。但是考虑您的应用程序框架也很重要。您是否选择仅迁移到Amazon以用于数据库,或者列表中还有其他Amazon服务?
此外,在做出决定之前,请检查Redshift的费用。