полей в чём принципиальная разница между схемой MV TO с таблицей и отдельной MV с аналогичным движком?
2. Если на одну и ту же таблицу навесить несколько MV с одинаковым запросом, то данные в них должны быть одинаковые или есть какие-то нюансы?
3. Влияет ли как-то ключ сортировки\первичный ключ на скорость схлопывания данных в CollapsingMergeTree?
тут все что нужно знать про MV https://youtu.be/1LVJ_WcLgF8?t=7595 2. да, одинаковые 3. практически нет.
1) схема с отдельной таблицей удобнее чем с .inner, потому что более понятная и проще отдельно эту внешную таблицу ALTER делать 2) если запросы действительно одинаковые в MV, но могут отличаться целевые движки таблиц и данные по времени вставляются РАЗДЕЛЬНО и РАЗДЕЛЬНО идут background merge в общем thread pool так что после вставки могу быть разные результаты select 3) да влияет, но мало, чем длинее ключ (больше полей и больше кардинальность) тем медленней скорость (больше сравнений)
Доклад отличный! MV стал понимать намного лучше. На слайде про каскадирование MV было сказано, что MV1 при вставке преобразованных данных в своё хранилище триггерит MV2. А есть ли возможность триггерить MV на событие схлопывания данных движком? Например, мне надо сначала убрать дубли (чтобы отработал CollapsingMergeTree), а потом обращаться к нескольким столбцам схлопнутых данных по ключу, отличному от ключа схлопывания. Есть ли какие-то лайфхаки на этот счёт?
>триггерить MV на событие схлопывания данных движком? нет. MV вообще не физически не может прочитать из таблицы, то что в таблице что-то там схлопнулось, значения не имеет, MV не может это прочитать. Посмотрите LiveView. >Есть ли какие-то лайфхаки на этот счёт? Все в доке. Данные всегда не схлопнуты, более того в какой-то момент парты достигнут макс. размера и схлопываться больше не будут. Т.е. все запросы select надо написать чтобы select домерживал, доагрегировал. Возможно вам подойдет модификатор FINAL, просто делать select from таблица FINAL
Спасибо, буду изучать.
Денис, а я правильно понимаю, что прилетающие в MV куски данных ещё никак не отсортированы, а потому запрос можно особо не оптимизировать с учётом ключа сортировки?
да, не отсортированы, порядок записей в блоке ровно как было в инсерте. парт сортируется в слпд. стадии, при записи на диск.
Обсуждают сегодня