Подскажите пожалуйста, чет не врублюсь. Может ли у mat. view быть первичный - Базы данных
l_dar
5/6/2021, 6:29:31 AM
Ответов:
Подскажите пожалуйста, чет не врублюсь. Может ли у mat. view быть первичный

индекс отличный от order by? Пытаюсь сделать, пишет Primary key must be a prefix of the sorting key, but its length: 5 is greater than the sorting key length: 1 version 20.9.2.20 official build

Ответы (27)

Аноним
5/6/2021, 6:41:58 AM

Таблица, в которую прилетают данные из MV, у вас, скорее всего, из семейства MergeTree. Правила создания таблицы такие же, как и для обычных MergeTree таблиц.

L-dar
5/6/2021, 6:42:54 AM

Ну да, я это читал. Там и написано, что первичный ключ может отличаться от ордер

Аноним
5/6/2021, 6:43:30 AM

Может, но должен быть частью order by, насколько я помню.

L-dar
5/6/2021, 6:48:05 AM

мда...Засада. Как тогда быть, использую AggregatingMergeTree, чтоб схлопывалась по одной колонке, т.е. эту колонку указывают в order by. Но мне необходимы еще индексы, получается не смогу создать

Аноним
5/6/2021, 6:49:49 AM

Схлопывается будет по первичному ключу. Сортировка по order by.

L-dar
5/6/2021, 6:51:50 AM

Что за сервисный ключ? В не вижу в доке https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/aggregatingmergetree/

Аноним
5/6/2021, 6:54:43 AM

Это телефон шалит. Имелся ввиду первичный ключ.

L-dar
5/6/2021, 7:03:04 AM

Замкнутый круг получается. Хочу схлопывать по одному полю. Подразумевается, что по этому полю я делаю группировку в запросе при создании Mater.View Но! в запросе поля GROUP BY должны быть такими же, что и в ORDER BY при создании Mater.View. В моем случае группировка идет по одному полю...Как мне тогда добавить индексы...Надеюсь понятно расписал...

Ivan Kalinin
5/6/2021, 7:18:22 AM

Какие индексы?

L-dar
5/6/2021, 7:23:02 AM

певичный ключ имею ввиду. Хочу ускорить выборку, поэтому хочу добавить поля. Но здесь схлопываются по этому ключу

Аноним
5/6/2021, 7:23:59 AM

Схлапывается по order by. Primary key это поля в которые будут в индексе

Ivan Kalinin
5/6/2021, 7:24:06 AM

Если поля просто так добавить в первичный ключ, то ничего автоматически не ускорится

Аноним
5/6/2021, 7:29:24 AM

Никак не добавить. И смысла добавлять нету.

L-dar
5/6/2021, 7:29:57 AM

Смысл есть, чтоб ускорить выборку по этим ключам

Аноним
5/6/2021, 7:30:42 AM

Смысла нет. В тех полях недоагрегированные данные.

L-dar
5/6/2021, 7:33:51 AM

Но в MV в результате будут находится сагрегированные данные. т.е. результат схлопывания. Как на эти поля поставиьт какой нибудь индекс?

L-dar
5/6/2021, 7:39:49 AM

Для таблицы, которую я указал наверху, я создаю такой MV CREATE MATERIALIZED VIEW table_mv ENGINE = AggregatingMergeTree() PARTITION BY toStartOfWeek(created_ts) ORDER BY (id) PRIMARY KEY (id) POPULATE as select id, any(col1) as col1, any(col2) as col2, any(col3) as col3, any(col4) as col4 from table GROUP BY id; Но я хочу использовать индекс еще по полю col2. Как я понял, это сделать никак, если только создавать еще одну mv

Аноним
5/6/2021, 11:21:50 AM

Они никогда не аггрегированы до конца

Аноним
5/6/2021, 11:22:31 AM

Нельзя и не имеет смысла.

Аноним
5/6/2021, 12:29:58 PM

ну никак не надо оптимизировать. Если КХ слишком медленный для вас возьмите что-нибудь другое, например memsql, я бы точно попробовал, если бы у меня были такие странные требования

L-dar
5/6/2021, 12:42:21 PM

В чем странность требований?

Аноним
5/6/2021, 1:17:10 PM

Вам надо искать по метрикам. Все ищут по дименшинам

Аноним
5/6/2021, 3:25:22 PM

вам просто нужен дополнительный индекс? ну так добавьте дополнительный индекс. https://clickhouse.tech/docs/ru/sql-reference/statements/alter/index/ https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/mergetree/#table_engine-mergetree-data_skipping-indexes

L-dar
5/6/2021, 4:19:51 PM

Стыдно, но я не понял о чем речь. Можно указать вектор?)

Аноним
5/6/2021, 4:23:20 PM

у вас ИД в индексе первым идет? а сколько дистинкт ИД возвращается из самого глубокого запроса?

L-dar
5/6/2021, 4:28:42 PM

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

Аноним
5/6/2021, 4:35:20 PM

ну если в конце то пользы нет. а если попробовать prewhere col1=1 во внутреннем запросе вместо вот этого where ID ( IN ...... ) и замерить время только внутреннего запроса с Format Null?

Похожие вопросы по теме Базы данных

BlackmorseMan
2/13/2021, 7:06:20 AM
Ответов: 23
Я правильно понимаю, что в новых КХ по умолчанию Engine для database

- Atomic, и при удалении таблиц DROP TABLE - таблица теперь удаляется не сразу, а асинхронно через какое-то время? Есть вариант как-то зафорсить удаление таблицы сразу, или сделать запрос на удаление синхронным ?

Аноним
10/26/2020, 4:34:19 PM
Ответов: 24
Всем привет! Создаю словарь и пишет NOT LOADED. Каким запросом можно инициализировать

и проверить словать?

OrNixx
7/14/2021, 9:37:00 AM
Ответов: 27
всем привет. готовлю КХ для преобразования в реплицируемые таблицы. прописал в конфиге

3 ноды зукипера. Прилетел алерт от заббикса: ClickHouse: Too many ZooKeeper sessions opened 2 sessions. Откуда берётся 2я сессия, и проблема ли это? Реплицированных таблиц ещё нет

vetinary
5/10/2021, 3:58:59 PM
Ответов: 25
Есть кластер из 3 шардов по 2 реплики каждый. В какой-то момент

на 2 серверах закончилось место недоглядели 🤷. Место почистили, но за время, пока оно закончилось, не писали данные в zookeeper и в clickhouse, соответственно. Теперь есть рассинхрон а данных 2 реплик, а в логах полно записей вида: 2021.05.10 15:55:00.217590 [ 69 ] {} <Warning> info.data_meter_humidity_shard ReplicatedMergeTreePartCheckThread: Found parts with the same min block and with the same max block as the missing part 202105_359932_359943_2. Hoping that it will eventually appear as a result of a merge. 2021.05.10 15:55:00.941870 [ 72 ] {} <Warning> info.data_meter_humidity_shard ReplicatedMergeTreePartCheckThread: Checking part 202105_359932_359943_2 2021.05.10 15:55:00.977746 [ 72 ] {} <Warning> info.data_meter_humidity_shard ReplicatedMergeTreePartCheckThread: Checking if anyone has a part 202105_359932_359943_2 or covering part. Внимание, вопрос: как всё вылечить и заставить нормально работать дальше? 🙁

Vsevolodlukovsky
3/11/2021, 12:34:15 PM
Ответов: 24
`select a,b from test.table WHERE pr_dttm

> select maxpr_dttm from test.table2 limit 200` запрос выполняется адово долго, как будто он каждый раз считает величину из подзапроса, при том что считать ее надо ровно один раз. Раньше считалось быстро - кто-нибудь знает, это лечится какой-то опцией?

Аноним
11/11/2020, 6:06:33 PM
Ответов: 24
привет всем, не подскажите может есть npm клиент через tcp а не

http?

Аноним
6/5/2021, 3:05:34 PM
Ответов: 23
Как мне сразу в запросе отобрать элементы с bOrder = 1 ?

Select sessionTimestamp, groupArrayeventName as gEventName, arrayExistsx->x='bOrder',gEventName AS bOrder

Аноним
12/15/2020, 1:44:01 PM
Ответов: 29
Подскажите как решить решить проблему с битым файлом *.mrk2? Запросы select не

отрабатывают. Можно его как-то пересчитать или безболезненно удалить?

l_dar
5/28/2021, 12:54:18 PM
Ответов: 26
Можете подсказать, после обновления кликхауса, простые запросы,.которые раньше отрабатывали, стали выдвать переполнение

памяти, в чем может быть проблема? DB::Exception: Memory limit for query exceeded: would use 9.49 GiB

Аноним
6/3/2021, 9:45:48 AM
Ответов: 23
Всем привет. Как лучше сделать структуру для кейса когда к 5% данных

будет оставляться заметка? Думаю merge tree для основных данных, и collapsing merge tree для комментов. Потом данные тащить через union all. Рабочая схема, или уже получше можно сделать? Денормализованно хранить как понимаю будет хуже