Size: a a a

ClickHouse не тормозит

2021 February 04

S

Slach in ClickHouse не тормозит
Sergey Sesiunin
Буду благодарен)
драйвер 64bit ставил
clickhouse у меня поднят в docker + wsl2 с пробросом портов
поэтому localhost
источник

S

Slach in ClickHouse не тормозит
Sergey Sesiunin
Буду благодарен)
получилось что нибудь замерять?
источник

L

Lazoreth in ClickHouse не тормозит
Друзья, подскажите пожалуйста. Есть такого вида запрос
SELECT port_id,
      ip_address,
      count(*)
FROM external_ips
WHERE (sample_time >= '2020-12-06 00:00:00' AND sample_time <= '2020-12-06 23:59:59')
GROUP BY port_id, ip_address;

Запрос просто делает аггрегацию на определённые сутки. А если я хочу допустим сделать за месяц выборку, с аггрегацией по суткам, можно как-то кликхаус заставить выдать мне данные сразу аггрегированные по суткам за каждый день месяца? Не могу что-то собразить. Цель вообще сделать materialized_view
источник

3

3ldar in ClickHouse не тормозит
Lazoreth
Друзья, подскажите пожалуйста. Есть такого вида запрос
SELECT port_id,
      ip_address,
      count(*)
FROM external_ips
WHERE (sample_time >= '2020-12-06 00:00:00' AND sample_time <= '2020-12-06 23:59:59')
GROUP BY port_id, ip_address;

Запрос просто делает аггрегацию на определённые сутки. А если я хочу допустим сделать за месяц выборку, с аггрегацией по суткам, можно как-то кликхаус заставить выдать мне данные сразу аггрегированные по суткам за каждый день месяца? Не могу что-то собразить. Цель вообще сделать materialized_view
Ну если есть колонка с днями, используйте её. Если нет, то можно взять toDate(sample_time)
источник

DK

Dmitry Kuzmin in ClickHouse не тормозит
Lazoreth
Друзья, подскажите пожалуйста. Есть такого вида запрос
SELECT port_id,
      ip_address,
      count(*)
FROM external_ips
WHERE (sample_time >= '2020-12-06 00:00:00' AND sample_time <= '2020-12-06 23:59:59')
GROUP BY port_id, ip_address;

Запрос просто делает аггрегацию на определённые сутки. А если я хочу допустим сделать за месяц выборку, с аггрегацией по суткам, можно как-то кликхаус заставить выдать мне данные сразу аггрегированные по суткам за каждый день месяца? Не могу что-то собразить. Цель вообще сделать materialized_view
SELECT toDate(sample_time) as date,
      port_id,
      ip_address,
      count(*)
FROM external_ips
WHERE /* период */
GROUP BY date, port_id, ip_address;
источник

L

Lazoreth in ClickHouse не тормозит
Dmitry Kuzmin
SELECT toDate(sample_time) as date,
      port_id,
      ip_address,
      count(*)
FROM external_ips
WHERE /* период */
GROUP BY date, port_id, ip_address;
Спасибо огромное
источник

M

Mishanya in ClickHouse не тормозит
Lazoreth
Друзья, подскажите пожалуйста. Есть такого вида запрос
SELECT port_id,
      ip_address,
      count(*)
FROM external_ips
WHERE (sample_time >= '2020-12-06 00:00:00' AND sample_time <= '2020-12-06 23:59:59')
GROUP BY port_id, ip_address;

Запрос просто делает аггрегацию на определённые сутки. А если я хочу допустим сделать за месяц выборку, с аггрегацией по суткам, можно как-то кликхаус заставить выдать мне данные сразу аггрегированные по суткам за каждый день месяца? Не могу что-то собразить. Цель вообще сделать materialized_view
в группировку можно свой аггрегат передать
источник

MP

Mikle Prist in ClickHouse не тормозит
Добрый день. Подскажите, пожалуйста, можно подключить базы из примонтированных устройств (разные диски одного сервера)? Можно ли их примонтировать в /var/lib/clickhouse/...?
источник

L

Lazoreth in ClickHouse не тормозит
А если у меня в materialized_view селект какой-то огромный, который сам по себе изначально по 10-15 сек выполняется. Получается он при каждом инсерте в таблицы, откуда селект выполняется, будет выполнятся снова. Правильно я понимаю?
источник

AS

Alexey Sokolov in ClickHouse не тормозит
Lazoreth
А если у меня в materialized_view селект какой-то огромный, который сам по себе изначально по 10-15 сек выполняется. Получается он при каждом инсерте в таблицы, откуда селект выполняется, будет выполнятся снова. Правильно я понимаю?
Запрос в MV выполняется не над всей таблицей, а только над вставляемым куском данных. Но да, каждый раз.
источник

S

Slach in ClickHouse не тормозит
Lazoreth
А если у меня в materialized_view селект какой-то огромный, который сам по себе изначально по 10-15 сек выполняется. Получается он при каждом инсерте в таблицы, откуда селект выполняется, будет выполнятся снова. Правильно я понимаю?
MV это AFTER INSERT TRIGGER
который вещается на "таблицы"

таблицы которые ты указываешь как SELECT ... FROM ... в SELECT для MV
там будет браться не все данные всех таблиц, а только какая то одна в которую пришел INSERT
и работать этот SELECT будет только с куском данных а не  со всей таблицей

то есть делать MV в котором JOIN и куча других тоже изменяющихся таблиц, так себе идея
делать MV над 1й таблицей + dictGet из словарей, уже лучше
делать MV + JOIN на неизменяемые таблицы, тоже норм. но сильно зависит от скорости JOIN
источник

L

Lazoreth in ClickHouse не тормозит
Slach
MV это AFTER INSERT TRIGGER
который вещается на "таблицы"

таблицы которые ты указываешь как SELECT ... FROM ... в SELECT для MV
там будет браться не все данные всех таблиц, а только какая то одна в которую пришел INSERT
и работать этот SELECT будет только с куском данных а не  со всей таблицей

то есть делать MV в котором JOIN и куча других тоже изменяющихся таблиц, так себе идея
делать MV над 1й таблицей + dictGet из словарей, уже лучше
делать MV + JOIN на неизменяемые таблицы, тоже норм. но сильно зависит от скорости JOIN
Вообще идея в том что у нас сейчас есть таблицы, куда семплы пишутся каждую минуту. Хотел просто аггрегацию семплов по суткам сделать и писать в отдельную таблицу, что бы потом оттуда данные брать по датам быстренько, а не шерстить 1440*30*N записей когда нужно за месяц данные собрать. Получается всё равно проще раз в сутки по расписанию делать чтение и запись в эту таблицу данных за последние сутки чем делать MV =\
источник

AS

Alexey Sokolov in ClickHouse не тормозит
Lazoreth
Вообще идея в том что у нас сейчас есть таблицы, куда семплы пишутся каждую минуту. Хотел просто аггрегацию семплов по суткам сделать и писать в отдельную таблицу, что бы потом оттуда данные брать по датам быстренько, а не шерстить 1440*30*N записей когда нужно за месяц данные собрать. Получается всё равно проще раз в сутки по расписанию делать чтение и запись в эту таблицу данных за последние сутки чем делать MV =\
Можете с помощью MV копировать данные в другую таблицу с движком AggregationMergeTree, где они фоном будут агрегироваться по дате, например.
источник

L

Lazoreth in ClickHouse не тормозит
Alexey Sokolov
Можете с помощью MV копировать данные в другую таблицу с движком AggregationMergeTree, где они фоном будут агрегироваться по дате, например.
Звучит как план. Если MV будет туда только новые данные докидывать, то прям супер
источник

S

Slach in ClickHouse не тормозит
Lazoreth
Вообще идея в том что у нас сейчас есть таблицы, куда семплы пишутся каждую минуту. Хотел просто аггрегацию семплов по суткам сделать и писать в отдельную таблицу, что бы потом оттуда данные брать по датам быстренько, а не шерстить 1440*30*N записей когда нужно за месяц данные собрать. Получается всё равно проще раз в сутки по расписанию делать чтение и запись в эту таблицу данных за последние сутки чем делать MV =\
нет 1 в 1 нормально сделайте MV, он для даунсемлинга вполне норм подходит

сделайте таблицу T2 Engine=AggregationMergeTree  (читайте в доке как)
сделайте CREATE MATERIALIZED VIEW MV TO T2 ... SELECT ... FROM T1 ... GROUP BY ...
получите искомый даунсемлинг
но запросы из таблицы T2 все равно делайте с GROUP BY
источник

L

Lazoreth in ClickHouse не тормозит
Slach
нет 1 в 1 нормально сделайте MV, он для даунсемлинга вполне норм подходит

сделайте таблицу T2 Engine=AggregationMergeTree  (читайте в доке как)
сделайте CREATE MATERIALIZED VIEW MV TO T2 ... SELECT ... FROM T1 ... GROUP BY ...
получите искомый даунсемлинг
но запросы из таблицы T2 все равно делайте с GROUP BY
Спасибо большое!
источник

DM

Danila Migalin in ClickHouse не тормозит
господа инженеры, подскажите, пожалуйста, я чет даже не пойму с какой стороны подступиться
есть у меня запрос, который возвращает что-то подобное

┌──────time───────────┬──qpm─┬──m─┐
│ 2021-02-04 12:31:00 │   v1 │ m1 │
│ 2021-02-04 12:31:00 │   v2 │ m2 │
│ 2021-02-04 12:31:00 │   v3 │ m2 │
└─────────────────────┴──────┴────┘

и хотелось бы как-то, гм, транспонировать эту таблицу в вот такое:
┌──────time───────────┬──m1─┬──m2─┬─m3──┐
│ 2021-02-04 12:31:00 │  v1 │  v2 │ v3  │
└─────────────────────┴─────┴─────┴─────┘


(число этих измерений m1, m2, … mN в идеале произвольное, но сойдет и фиксированное N)
сам запрос https://pastebin.com/tQaD5Std
источник

Д

Дмитрий in ClickHouse не тормозит
Danila Migalin
господа инженеры, подскажите, пожалуйста, я чет даже не пойму с какой стороны подступиться
есть у меня запрос, который возвращает что-то подобное

┌──────time───────────┬──qpm─┬──m─┐
│ 2021-02-04 12:31:00 │   v1 │ m1 │
│ 2021-02-04 12:31:00 │   v2 │ m2 │
│ 2021-02-04 12:31:00 │   v3 │ m2 │
└─────────────────────┴──────┴────┘

и хотелось бы как-то, гм, транспонировать эту таблицу в вот такое:
┌──────time───────────┬──m1─┬──m2─┬─m3──┐
│ 2021-02-04 12:31:00 │  v1 │  v2 │ v3  │
└─────────────────────┴─────┴─────┴─────┘


(число этих измерений m1, m2, … mN в идеале произвольное, но сойдет и фиксированное N)
сам запрос https://pastebin.com/tQaD5Std
select groupArray(n) arr_n, arr_n[1], arr_n[2], arr_n[3] from (
select number n from numbers(3)
)
источник

SS

Sergey Sesiunin in ClickHouse не тормозит
Slach
получилось что нибудь замерять?
Да, я сразу на своей таблице пытаюсь проверить, но результат вообще не радует уже пару минут крутится, сетка всего на 30 мбит грузится, без vertical можно ? Как сделать вид «как есть»? Просто у меня куча столбцов и при вертикале он каждый столбик в строку записывает видимо
источник

S

Slach in ClickHouse не тормозит
Sergey Sesiunin
Да, я сразу на своей таблице пытаюсь проверить, но результат вообще не радует уже пару минут крутится, сетка всего на 30 мбит грузится, без vertical можно ? Как сделать вид «как есть»? Просто у меня куча столбцов и при вертикале он каждый столбик в строку записывает видимо
никак... значит rust еще тупее чем остальное =) извините что не  в ту стороне отправил

есть еще
https://github.com/microsoft/ODBCTest
он вроде в комплекте MDAC поставлялся
но я что-то не могу найти MDAC на мракософт
источник