我对来自十个连接表的大查询有疑问。我正在将数据从宽事实表 (f1) 迁移到星型模式。我首先从 f1 填充维度表,然后通过连接到维度表来填充新的事实表 (f2) 以获得相应的 ID。
不幸的是,我收到一个错误,“内部分区不适合内存”。从日志中我看到:
2012-10-18 16:20:31.607 Init Session:0x2aac6c02b250 [EE] <INFO> ENABLE_JOIN_SPILL may allow this query to run, with reduced performance
2012-10-18 16:20:31.607 Init Session:0x2aac6c02b250 [EE] <INFO> Query Retry action: Setting add_vertica_options('EE','ENABLE_JOIN_SPILL');
但这也不起作用,因为后来我得到:
2012-10-18 16:23:31.138 Init Session:0x2aac6c02b250 [EE] <INFO> Join ((public.owa_search_term_dim x public.page_impressions_with_session) using owa_search_term_dim_projection_node0001 and previous join (PATH ID: 7)) inner partition did not fit in memory; value
2012-10-18 16:23:31.138 Init Session:0x2aac6c02b250 [EE] <INFO> Query Retry action: Swapping join order with override: 1|7|0
这种情况持续了一段时间,而 Vertica 显然试图找到一种方法来执行连接,但最终因错误说连接不适合内存而退出。
是否有关于如何最小化执行连接所需的内存或为什么溢出到磁盘不起作用的任何提示?我可以处理性能问题,我只需要能够执行查询。