Size: a a a

ClickHouse не тормозит

2020 June 29

D

Dj in ClickHouse не тормозит
Required Optional
пойдем по обратной диагонали тогда. У меня есть примари, который ордер бай. Все нормально работает , но вот есть запросы в который добавили пару полей. Местные кулибины предлагают сделать блум_фильтер на добавочные поля с гранулярностью в 1. Насколько это оптимально? Или имеет смысл на численные поля поставить мимакс индекс, а на строковые блум...
Делайте поиск в чатике по слову "локальность". Недавно было.
источник

RO

Required Optional in ClickHouse не тормозит
Dj
Делайте поиск в чатике по слову "локальность". Недавно было.
спасибо... ищем
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Katherine
всем привет! подскажите, пожалуйста: вставляю данные из csv в таблицу ReplicatedMergeTree, точно знаю, что в csv есть дубли, но может ли быть такое, что в данном случае часть данных может потеряться именно из-за дублей?
(для наглядности простой пример - в файле 5млн строк и 1 столбец, из которых 2млн со значением "1" и 3млн со значением "2", при записи в КХ остается те же 2млн "1" и ~1,95млн "2")
да, Replicated таблицы не пропускают дубли БЛОКОВ

добавьте параметр insert_deduplicate=0
источник

КТ

Константин Трофимов... in ClickHouse не тормозит
Для CollapsingMergeTree можно поинсертить с "-1" в поле "sign" и оно схлопнет (удалит) строки с остальными одинаковыми полями, согласно документации. А есть ли какой либо способ то же самое сделать, именно удалить интересующие строки, с движком ReplacingMergeTree? Как я понял из документации вроде как нет... Но вдруг всё таки да? )
источник

ED

Evgeniy Devyatykh in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
ну покажите статистику из клиента

я ожидаю для запроса processed rows 4.5 bil , тут ничего не поможет

SELECT source_id, max(get_time) FROM table
PREWHERE source_id=333415 AND get_time<='2020-06-26 09:00:00'
GROUP BY source_id
так у меня таблица ORDER BY (source_id,get_time)
т.е. всё по индексу.
Processed там конечно не 4.5B - я б не спрашивал  тогда:)
десятки сотни тысяч обычно показывает. в зависимости куда попадёт видимо
источник

KB

Kirill Borovko in ClickHouse не тормозит
Kirill Borovko
Всем привет, подскажите пожалуйста, как или где посмотреть размер индекса таблицы на диске для CH? Правильно ли я понимаю, что размер индекса это размер таблицы на диске минус объем данных в таблице(можно получить с помощью запроса "SELECT table, round(sum(bytes) / 1024/1024/1024, 2) as size_gb
FROM system.parts
WHERE active
GROUP BY table
ORDER BY size_gb DESC")?
Никто не в курсе?
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Evgeniy Devyatykh
так у меня таблица ORDER BY (source_id,get_time)
т.е. всё по индексу.
Processed там конечно не 4.5B - я б не спрашивал  тогда:)
десятки сотни тысяч обычно показывает. в зависимости куда попадёт видимо
вот чудак человек, покажите из КХ клиента вывод двух запросов, со статистикой и результатом


SELECT source_id, get_time FROM table
PREWHERE source_id=333415 AND get_time<='2020-06-26 09:00:00'
order by source_id desc, get_time desc limit 1

SELECT source_id, max(get_time) FROM table
PREWHERE source_id=333415 AND get_time<='2020-06-26 09:00:00'
GROUP BY source_id
источник

ED

Evgeniy Devyatykh in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
вот чудак человек, покажите из КХ клиента вывод двух запросов, со статистикой и результатом


SELECT source_id, get_time FROM table
PREWHERE source_id=333415 AND get_time<='2020-06-26 09:00:00'
order by source_id desc, get_time desc limit 1

SELECT source_id, max(get_time) FROM table
PREWHERE source_id=333415 AND get_time<='2020-06-26 09:00:00'
GROUP BY source_id
пардоньте, пожалуйста

1. 1 rows in set. Elapsed: 0.498 sec. Processed 603.49 thousand rows, 4.83 MB (1.21 million rows/s., 9.69 MB/s.)
2. 1 rows in set. Elapsed: 0.023 sec. Processed 603.49 thousand rows, 4.83 MB (25.74 million rows/s., 205.93 MB/s.)
источник

ED

Evgeniy Devyatykh in ClickHouse не тормозит
про метод IN с max вычитал здесь
https://www.altinity.com/blog/2020/4/8/five-ways-to-handle-as-of-queries-in-clickhouse
там он назван самым быстрым
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Evgeniy Devyatykh
пардоньте, пожалуйста

1. 1 rows in set. Elapsed: 0.498 sec. Processed 603.49 thousand rows, 4.83 MB (1.21 million rows/s., 9.69 MB/s.)
2. 1 rows in set. Elapsed: 0.023 sec. Processed 603.49 thousand rows, 4.83 MB (25.74 million rows/s., 205.93 MB/s.)
а весь запрос целиком? сколько Processed ?
да, видимо можно уменьшить index_granularity, запускать запросы с max_threads=1, max_block_size=1024
но на 100 rps конечно КХ не рассчитан
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Константин Трофимов
Для CollapsingMergeTree можно поинсертить с "-1" в поле "sign" и оно схлопнет (удалит) строки с остальными одинаковыми полями, согласно документации. А есть ли какой либо способ то же самое сделать, именно удалить интересующие строки, с движком ReplacingMergeTree? Как я понял из документации вроде как нет... Но вдруг всё таки да? )
нету
источник

ED

Evgeniy Devyatykh in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
а весь запрос целиком? сколько Processed ?
да, видимо можно уменьшить index_granularity, запускать запросы с max_threads=1, max_block_size=1024
но на 100 rps конечно КХ не рассчитан
SELECT source_id, get_time FROM bucket_2
:-] PREWHERE source_id=333415 AND get_time<='2020-06-26 09:00:00'
:-] order by source_id desc, get_time desc limit 1;

SELECT
   source_id,
   get_time
FROM bucket_2
PREWHERE (source_id = 333415) AND (get_time <= '2020-06-26 09:00:00')
ORDER BY
   source_id DESC,
   get_time DESC
LIMIT 1

┌─source_id─┬────────────get_time─┐
│    333415 │ 2020-06-26 06:43:54 │
└───────────┴─────────────────────┘

1 rows in set. Elapsed: 0.498 sec. Processed 603.49 thousand rows, 4.83 MB (1.21 million rows/s., 9.69 MB/s.)


эх. спасибо!
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Kirill Borovko
Всем привет, подскажите пожалуйста, как или где посмотреть размер индекса таблицы на диске для CH? Правильно ли я понимаю, что размер индекса это размер таблицы на диске минус объем данных в таблице(можно получить с помощью запроса "SELECT table, round(sum(bytes) / 1024/1024/1024, 2) as size_gb
FROM system.parts
WHERE active
GROUP BY table
ORDER BY size_gb DESC")?
зачем вам? .idx файлы очень маленькие, индекс разреженный
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Evgeniy Devyatykh
SELECT source_id, get_time FROM bucket_2
:-] PREWHERE source_id=333415 AND get_time<='2020-06-26 09:00:00'
:-] order by source_id desc, get_time desc limit 1;

SELECT
   source_id,
   get_time
FROM bucket_2
PREWHERE (source_id = 333415) AND (get_time <= '2020-06-26 09:00:00')
ORDER BY
   source_id DESC,
   get_time DESC
LIMIT 1

┌─source_id─┬────────────get_time─┐
│    333415 │ 2020-06-26 06:43:54 │
└───────────┴─────────────────────┘

1 rows in set. Elapsed: 0.498 sec. Processed 603.49 thousand rows, 4.83 MB (1.21 million rows/s., 9.69 MB/s.)


эх. спасибо!
я имел в виду весь изначальный запрос, с union all и внешним запросом
источник

ED

Evgeniy Devyatykh in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
я имел в виду весь изначальный запрос, с union all и внешним запросом
SELECT get_time
FROM bucket_2
PREWHERE (source_id, get_time) IN
(
   SELECT
       source_id,
       max(get_time)
   FROM bucket_2
   PREWHERE (source_id = 333415) AND (get_time <= '2020-06-26 09:00:00')
   GROUP BY source_id
   UNION ALL
   SELECT
       source_id,
       min(get_time)
   FROM bucket_2
   PREWHERE (source_id = 333415) AND (get_time > '2020-06-26 09:00:00')
   GROUP BY source_id
)

┌────────────get_time─┐
│ 2020-06-26 06:43:54 │
└─────────────────────┘

1 rows in set. Elapsed: 0.050 sec. Processed 38.54 thousand rows, 308.30 KB (765.75 thousand rows/s., 6.13 MB/s.)
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Evgeniy Devyatykh
SELECT get_time
FROM bucket_2
PREWHERE (source_id, get_time) IN
(
   SELECT
       source_id,
       max(get_time)
   FROM bucket_2
   PREWHERE (source_id = 333415) AND (get_time <= '2020-06-26 09:00:00')
   GROUP BY source_id
   UNION ALL
   SELECT
       source_id,
       min(get_time)
   FROM bucket_2
   PREWHERE (source_id = 333415) AND (get_time > '2020-06-26 09:00:00')
   GROUP BY source_id
)

┌────────────get_time─┐
│ 2020-06-26 06:43:54 │
└─────────────────────┘

1 rows in set. Elapsed: 0.050 sec. Processed 38.54 thousand rows, 308.30 KB (765.75 thousand rows/s., 6.13 MB/s.)
да, видимо можно уменьшить index_granularity до 512 / 128, запускать запросы с max_threads=1, max_block_size=1024
источник

ED

Evgeniy Devyatykh in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
да, видимо можно уменьшить index_granularity до 512 / 128, запускать запросы с max_threads=1, max_block_size=1024
Спасибо большое!
источник

IR

Igor Reva in ClickHouse не тормозит
/stat@combot
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Evgeniy Devyatykh
Спасибо большое!
mysql и postgre конечно порвут КХ в 1000 раз
источник

ED

Evgeniy Devyatykh in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
mysql и postgre конечно порвут КХ в 1000 раз
как бы да. это собственно работает в mysql сейчас
была идейка попробовать к КХ адаптировать. но вот этот гадский запрос портит всё
источник