我们正在 Redshift 实例上处理一个供应商的大量数据,并且需要一系列查询来对去识别化的信用卡交易进行分类。我们的 Redshift 存储总量为 15tb,静态数据约占其中的一半。一些包含多个连接的查询在执行时会崩溃并耗尽所有空间,但只是有时如此。爆炸的查询通常只包含具有相同结构的其他查询的一小部分行。
我们认为优化器做出了一些错误的决定,但是每次运行爆炸查询时查询计划都是不同的。当相同的查询没有爆炸时,它们会在一分钟内完成,但现在出现问题。相同的数据。
这里的问题是,我们是否可以使用一些提示或设置来强制优化器做出某些决定?或者有关如何更好地组织数据的提示?
弹出的一个错误指出“在网络上分布了大量行”,如果有帮助的话。
听起来你有一个“中间很胖”的查询。这意味着查询在执行期间“生成”新的中间数据。交叉连接可以属于这一类,但可以通过多种方式创建“中间胖”。
我曾与许多客户合作解决类似问题,我怀疑查询和可能的数据组织需要改变才能解决这个问题。这就是说,您将需要发布查询和解释计划,才能真正从社区中获得有关正在发生的事情的一些见解。重新分配大量数据并不好,但首先解决数据大小才是正确的方法。