У меня проблема с большим запросом из десяти объединенных таблиц. Я переношу данные из широкой таблицы фактов (f1) в звездообразную схему. Я начинаю с заполнения таблиц измерений из f1, а затем заполняю новую таблицу фактов (f2) присоединением к таблицам измерений, чтобы получить соответствующие идентификаторы.
К сожалению, выдает ошибку: «Внутренний раздел не поместился в памяти». Из журнала вижу:
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, по-видимому, пытается найти способ выполнить соединение, но в конце концов выдает ошибку, говоря, что соединение не помещается в памяти.
Есть ли какие-нибудь советы о том, как минимизировать объем памяти, необходимый для выполнения соединений, или почему не работает передача данных на диск? Я могу справиться с падением производительности, мне просто нужно иметь возможность выполнить запрос.