Проблема производительности с представлениями Снежинки - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть два разных экземпляра Снежинки. Во-первых, у меня есть материализованное представление, которое приносит данные путем объединения таблицы фактов и 3-4 таблиц измерений.

Create View V1 as
Select Col1, Col2, Col3, Col4 
From Fact_t1 
inner join Dim1 
inner join Dim2 
inner join Dim3

Кроме того, я создал безопасный вид. Это безопасное представление, которым я делюсь со вторым экземпляром, для создания отчетов и для целей BI.

Теперь, когда мы запрашиваем безопасное представление из второго экземпляра, мы сталкиваемся с множеством проблем с производительностью, когда запрос выполняется более 30 минут.

Мы выполняем это на малом или среднем уровне в зависимости от требований. Мы попытались изменить размер на XL, мы добились некоторой производительности, но, похоже, все еще наблюдается отставание.

Ниже приведены подробности о Snowflake DB: Размер: Маленький / Средний Объем таблицы: 1,4 М (фактически) , 100K + в размерах

Подскажите, пожалуйста, что еще можно сделать? Это происходит из-за того, что мы создаем безопасный вид для вида?

1 Ответ

0 голосов
/ 09 апреля 2020

Снежинка не поддерживает объединение нескольких таблиц в материализованном представлении. В первом случае вы создаете не материализованное представление, а представление. Каждый раз, когда выполняется проекция представления, данные извлекаются из базовых таблиц в удаленном хранилище, если только данные не находятся в кеше и не были изменены в течение последних 24 часов.

Поскольку происходит объединение данных размером более 100 x 1,4 М, что принесет миллионы строк из удаленного хранилища. Операция объединения будет выполняться для этих миллионов записей, поэтому обработка займет значительное время.

Чтобы повысить производительность, вместо этого создайте временную таблицу и обратитесь к ней в безопасном представлении, чтобы получить наилучшую производительность.

...