Query终止于红移



我们正在将数据库从SQL Server 2012迁移到Amazon Redshift。

我们的应用程序的前端是在MicroStrategy (MSTR)中开发的,它在Redshift上触发查询。

虽然应用程序在生产中运行良好(SQL Server 2012),但我们在Redshift上的PoC环境中遇到了一个奇怪的问题。

当我们在MSTR中启动仪表板时,来自仪表板的查询命中Redshift,并且它成功完成,没有任何问题。

但是当我们通过同时运行所有仪表板对应用程序进行压力测试时,那么特定仪表板的查询在红移中终止。数据库没有抛出任何错误消息,这就是为什么我们无法排除查询终止的原因。

谁能建议一下我们应该如何着手解决这个问题?

谢谢

问题可能是您在使用WLM配置发送查询的队列上有一些超时。

Redshift的设计不同于其他DB,为分析查询进行了优化。因此,它不缓存查询结果,而您可以使用OLTP DB。另一个区别是,您有一个预定义的并发级别(也是WLM - http://docs.aws.amazon.com/redshift/latest/mgmt/workload-mgmt-config.html的一部分)。每个并发槽都有其分配的资源来快速完成大型查询,但它限制了可以运行的并发查询的数量。默认配置为5,您可以将其增加到50。建议将其增加到不超过15-20,就像50一样,这意味着每个查询只获得2%的集群资源,而不是20%(5)或5%(20)。

这两个差异的组合是:如果你连接了许多仪表板,每个仪表板都将其查询发送到Redshift,争夺资源(没有缓存每个查询将一次又一次地运行),并且可能超时或对于交互式仪表板来说太慢。

请确保您正在使用MicroStrategy的Redshift优化驱动程序,这些驱动程序在上述假设下向Redshift发送查询。

你还可以考虑在仪表板和Redshift之间放置一些RDS,这些RDS包含了仪表板所需的聚合数据,并且可以在汇总数据上使用内存缓存和更高的并发性。你可以看到一个有趣的模式,你可以用pg-bouncer实现,它可以帮助你发送一些查询(分析的)到Redshift,一些(聚合仪表板的)到PostgreSQL。

最新更新