根据AWS Athena limitations,您一次最多可以提交20个相同类型的查询,但这是一个软限制,可以根据要求增加。我使用boto3
与Athena进行交互,我的脚本提交了16个CTAS查询,每个查询大约需要2分钟才能完成。在一个AWS账户中,只有我在使用Athena服务。但是,当我通过控制台查看查询的状态时,我看到实际上只有少数查询(平均5个)正在执行,尽管所有查询都处于状态Running
中。这是通常在“雅典娜”历史记录标签中看到的内容:
我了解到,向Athena提交查询后,它将通过基于整体服务负载和传入请求的数量分配资源来处理查询。但是我尝试在不同的日期和时间运行它们,仍然会同时执行约5个查询。
所以我的问题是这应该如何?如果这样的话,如果大约有15个查询处于空闲状态并等待可用的广告位,那么最多可以提交20个查询的意义。
答案 0 :(得分:1)
您对Athena服务的帐户限制不是SLA,而是查询调度程序中的优先级。
根据可用容量,即使您没有运行任何其他查询,您的查询也可能会排队。更高的并发限制实际上是内部的,并且可能会改变,但是根据我的经验,最好将其视为查询调度程序处理查询的优先级。所有帐户的查询都在同一服务器池中运行,并且如果每个人都在运行查询,将没有剩余容量供您使用。
通过反复运行同一查询,然后绘制查询执行指标随时间变化,您可以看到实际的效果,您会注意到它们之间的差异很大,并且您会注意到查询排队的时间尖峰每小时的最高时间–当其他所有人都在运行其计划的查询时。