Size: a a a

ClickHouse не тормозит

2021 February 08

V

Vladimir in ClickHouse не тормозит
Спасибо Вам в любом случае
источник

T

Tatiana in ClickHouse не тормозит
Vladimir
Будем пробовать, но баг-то открыт...
много открытых багов
главное - не наступать 🙂
источник

😎😈

😎 😈 in ClickHouse не тормозит
Коллеги, как правильно считать delta от минимального значения в группе (100500 попытка изобрести window функции)? Есть события (id, node, ts DateTime64), хочется посчитать delta для каждого id, но runningDifference не подходит, ибо он бежит по всем. Попробовал финт с
min(toUnixTimestamp64Micro(ts)) AS ts_min
и
groupArray((node, toUnixTimestamp64Micro(ts))) AS a
но такая история ацки жрет память и оказалось проблематично это засунуть в materialized view.
источник

😎😈

😎 😈 in ClickHouse не тормозит
Такой заход нормальный?
SELECT
   id,
   node,
   ts,
   ts - ts_min AS ts_delta,
   date
FROM
(
   SELECT
       id,
       min(toUnixTimestamp64Micro(ts)) AS ts_min,
       groupArray((node, toUnixTimestamp64Micro(ts))) AS a,
       date
   FROM msgtime
   WHERE date = '2021-02-06'
   GROUP BY (id, date)
)
ARRAY JOIN
   a.1 AS node,
   a.2 AS ts
источник

DT

Dmitry Titov in ClickHouse не тормозит
😎 😈
Такой заход нормальный?
SELECT
   id,
   node,
   ts,
   ts - ts_min AS ts_delta,
   date
FROM
(
   SELECT
       id,
       min(toUnixTimestamp64Micro(ts)) AS ts_min,
       groupArray((node, toUnixTimestamp64Micro(ts))) AS a,
       date
   FROM msgtime
   WHERE date = '2021-02-06'
   GROUP BY (id, date)
)
ARRAY JOIN
   a.1 AS node,
   a.2 AS ts
А сколько разных групп то?
источник

DT

Dmitry Titov in ClickHouse не тормозит
Может через JOIN лучше будет
источник

D

Dj in ClickHouse не тормозит
Nickolay Kovalev
Подскажите по update_field для словарей:

- Имеем таблицу в Postgres, в ней поле updated (timestamp with time zone, not null).
 Какой тип updated поля ожидает ClickHouse (timestamp / timestamp with time zone)?
- Конфиг словаря такой:
 <source>
   <name>test</name>
   <odbc>
     <table>table_name</table>
     <connection_string>DSN=...</connection_string>
     <update_field>updated</update_field>
   </odbc>
 </source>
 <layout>
   <ssd_cache>
   ...
   </ssd_cache>
 </layout>
 <lifetime>
   <min>30</min>
   <max>45</max>
 </lifetime>
 <structure>
   <id>
     <name>id</name>
     <type>UInt64</type>
   </id>
   <attribute>
     <name>status_id</name>
     <type>UInt8</type>
     <null_value />
   </attribute>
   <attribute>
     <name>updated</name>
     <type>UInt64</type>
     <null_value />
   </attribute>
 </structure>
- Делаем system reload dictionary test; select dictGet('test', 'status_id', toUInt64(1))
- Видим зарос в Postgres: SELECT "id", "status_id", "updated" FROM "test_table" WHERE "id" IN (1)
- Повторяем через минуту - снова такой же запрос в Postgres

Почему нет запроса вида updated >= {$last_check}?
Словарь наполняется выборками по ID, не сразу все / изменившиеся выгружаются?
вы смотрите на запрос который выполняется при промахе в кеш...
попробуйте сначала выбрать layout hashed/sparse_hashed...
тогда он выполнит один раз и заберет все, и каждый следующий раз будет выполнять update_field>=<last-updated>
формат всегда ожидается epoch судя по коду, (т.е. инт)
источник

😎😈

😎 😈 in ClickHouse не тормозит
Dmitry Titov
А сколько разных групп то?
Айдишников 40 миллионов, node десятки, база суммарно 1,5 лярда
источник

DT

Dmitry Titov in ClickHouse не тормозит
😎 😈
Айдишников 40 миллионов, node десятки, база суммарно 1,5 лярда
40 млн * на сколько дат
источник

😎😈

😎 😈 in ClickHouse не тормозит
Dmitry Titov
40 млн * на сколько дат
14 дней, дальше думаю не будем
источник

DT

Dmitry Titov in ClickHouse не тормозит
Ну и да, вы же знаете что МВ в кх это инсерт триггер на самом деле и он не читает таблицу
источник

IU

Ivan Ussik in ClickHouse не тормозит
Коллеги, подскажите как мне можно сгенерировать dummy  данные для вставки в таблицу с шагом по минутам.
Т.е мне надо вставить данные за всю прошлую неделю с шагом минута и в каждую колонку вставлять рандомную строчку или число ?
источник

DT

Dmitry Titov in ClickHouse не тормозит
Ivan Ussik
Коллеги, подскажите как мне можно сгенерировать dummy  данные для вставки в таблицу с шагом по минутам.
Т.е мне надо вставить данные за всю прошлую неделю с шагом минута и в каждую колонку вставлять рандомную строчку или число ?
now() - INTERVAL number MINUTE FROM numbers(10000)
источник

IU

Ivan Ussik in ClickHouse не тормозит
Dmitry Titov
now() - INTERVAL number MINUTE FROM numbers(10000)
Спасибо!
источник
2021 February 09

VZ

Vitaliy Zakaznikov in ClickHouse не тормозит
Жека Челак
Можно ли сделать MATERIALIZED VIEW которая будет обновлятся по заданаму периоду времени (например каждые 10 мин)?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Gulshan Agivetova
Доброе утро! Подскажите пожалуйста, как можно сделать так чтобы groupArray включал и NULL значения.

create table arrayTab (id UInt8,ch_name String, pidArray Array(UInt8),pnameArray Array(Nullable(String))) Engine=Memory;

insert into charges values
(100,'X')
(101,'Y')
(102,NULL);

insert into packs (pack_id,pack_name,charge_id) values
(4,NULL,100)
(2,'A',100)
(3,'C',100)
(1,'A',101)
(3,'B',101)
(1,NULL,102)
(2,'B',102);

insert into arrayTab
select id,max(chname), groupArray(pack_id),groupArray(pack_name) from (
select * from charges c
left join packs p on c.id=p.charge_id ) pp group by id;

Получается вот так:
select id,ch_name,pidArray,pnameArray from arrayTab;

100 X [4,2,3] ['A','C']
101 Y [1,3] ['A','B']
102  [1,2] B

но хотелось бы видеть:
100 X [4,2,3] ['A',NULL,'C']
101 Y [1,3] ['A','B']
102  [1,2] ['B',NULL]

Чтобы при array join  не было ошбки: Sizes of ARRAY-JOIN-ed arrays do not match

select * from arrayTab
array join pidArray,pnameArray;
(groupArray( tuple(pack_name) )).1
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Slach
feel free to Make Pull Request
Это специально сделано.
Агрегирующие функции не учитавают null. О об этом написано в доке.
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
KiLEX 萊赫
можно сделать сначала бекап при помощи alexakulov/clickhouse-backup
он создаст хардлинки на все парты и потом можно будет смело снимать снапшот, тогда точно проблем не будет
Нет, это не решает проблему. Точнее надо после бекапа сказать sync, чтобы записать грязный кеш на диск.
источник

ЖЧ

Жека Челак in ClickHouse не тормозит
Спасибо
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Nickolay Kovalev
Подскажите по update_field для словарей:

- Имеем таблицу в Postgres, в ней поле updated (timestamp with time zone, not null).
 Какой тип updated поля ожидает ClickHouse (timestamp / timestamp with time zone)?
- Конфиг словаря такой:
 <source>
   <name>test</name>
   <odbc>
     <table>table_name</table>
     <connection_string>DSN=...</connection_string>
     <update_field>updated</update_field>
   </odbc>
 </source>
 <layout>
   <ssd_cache>
   ...
   </ssd_cache>
 </layout>
 <lifetime>
   <min>30</min>
   <max>45</max>
 </lifetime>
 <structure>
   <id>
     <name>id</name>
     <type>UInt64</type>
   </id>
   <attribute>
     <name>status_id</name>
     <type>UInt8</type>
     <null_value />
   </attribute>
   <attribute>
     <name>updated</name>
     <type>UInt64</type>
     <null_value />
   </attribute>
 </structure>
- Делаем system reload dictionary test; select dictGet('test', 'status_id', toUInt64(1))
- Видим зарос в Postgres: SELECT "id", "status_id", "updated" FROM "test_table" WHERE "id" IN (1)
- Повторяем через минуту - снова такой же запрос в Postgres

Почему нет запроса вида updated >= {$last_check}?
Словарь наполняется выборками по ID, не сразу все / изменившиеся выгружаются?
Для ssd_cache не должно работать. Это бессмысленно.
источник