Время компиляции Redshift для запросов при первом запуске - PullRequest
0 голосов
/ 17 июня 2020
• 1000 (Хотя я не уверен на 100%). Но запрос может иногда растягиваться до $ 1000 + в соответствии с фильтрами / параметрами, выбранными в пользовательском интерфейсе.

Но проблема, которую мы наблюдаем, заключается в том, что в первый раз, когда этот запрос выполняется отчетами, требуется больше чем 40 сек c - 60 секунд на ответ. После первого раза запрос выполняется довольно быстро и занимает всего несколько секунд.

Сначала мы подозревали, что что-то не так с кешированием красного смещения, но оказалось, что даже такие простые запросы, как эти (Но огромные ) для КОМПИЛЯЦИИ требуется значительное время, что становится ясно, если мы заглянем в таблицу svl_compile, которая показывает, что этот запрос был скомпилирован более чем за 35 секунд.

Что мне делать, чтобы справиться с такими проблемами?

1 Ответ

0 голосов
/ 17 июня 2020

Порекомендуйте реструктурировать запрос, сгенерированный вашей информационной панелью, чтобы использовать список IN. Redshift должен иметь возможность повторно использовать уже скомпилированные сегменты запроса для списков разной длины IN.

Обратите внимание, что списки IN с менее чем 10 значениями все равно будут оцениваться как OR. https://docs.aws.amazon.com/redshift/latest/dg/r_in_condition.html#r_in_condition -оптимизация-для-больших списков

SELECT <ALIAS_TO_SCHEMA.TABLENAME>.<ANOTHER_COLUMN_NAME> as col_0_0_
     , SUM(<ALIAS_TO_SCHEMA.TABLENAME>.devicecount) AS col_1_0_
FROM <table_schema>.<table_name> <ALIAS_TO_SCHEMA.TABLENAME>
WHERE <ALIAS_TO_SCHEMA.TABLENAME>.<COLUMN_NAME> IN ( $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11 … $1000 ) 
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...