use*_*904 5 database join vertica
我有十个连接表的大查询问题.我正在将数据从广泛的事实表(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');
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为后来我得到:
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
Run Code Online (Sandbox Code Playgroud)
这种情况持续了一段时间,而Vertica显然试图找到一种方法来执行连接,但最终会因为连接不适合内存而出现错误.
是否有关于如何最小化执行连接所需的内存或为什么溢出到磁盘不起作用的提示?我可以处理性能损失,我只需要能够执行查询.
我为解决这个错误而做的事情......
使用这些步骤,我没有遇到任何无法获得结果的情况.有时需要一段时间.我有一组查询泵入一系列14个临时表,结束于一个非常小的结果集; 但由于必须完成原始的运算量,因此需要15分钟才能运行.