Попытка redshift повторно использовать скомпилированный код в запросах стиля where-in

Как обсуждалось здесь, redshift компилирует запросы при первом выполнении, а затем повторно использует этот скомпилированный код для аналогичных последующих запросов. Это приводит к тому, что первый запрос будет медленным (от 3 до 10 секунд), а последующие аналогичные - довольно быстрыми (от 80 до 200 мс). Это числа, которые я наблюдал на небольшом кластере с небольшим набором данных (1-5M рядов), другие имеют аналогичный опыт.

В этой статье:

Это то, что [не] вызвало перекомпиляцию:

  • Изменение количества student_ids в предложении WHERE менее чем на 10%

У меня есть похожий запрос, где я интенсивно использую WHERE ... IN(...), (заполняется полем множественного выбора в пользовательском интерфейсе), и это приводит к тому, что каждый запрос, использующий эти фильтры, выполняется намного медленнее, поскольку для красного смещения необходимо перекомпилировать эти запросы. В моем случае, > 90% времени, изменение одного значения в WHERE IN заставляет красное смещение перекомпилировать запрос.

И потому, что комбинации каждого фильтра очень большие (у меня около 10 фильтров, так что о 10!), подогрев кеша компиляции запросов, как в предыдущей статье, на самом деле не вариант.

Какие стратегии доступны для того, чтобы redshift использовал скомпилированный код для этого стиля запроса (возможно, переписать запрос в другом стиле, чтобы было возможно согревание кэша?)

0 ответов

Другие вопросы по тегам