Size: a a a

ClickHouse не тормозит

2020 September 01

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Artem
Что конкретно я делаю не так?
сложно сказать, я честно не понимаю что такое потеря данных после сбоя.
в смысле что вы под этим подразумеваете
источник

A

Artem in ClickHouse не тормозит
Данные прилетают по вебсокетам, иногда сеть отваливается, приложение падает, да хоть банально КХ обновить нужно. За эти секунды что-то не долетает и теряется. Раз в минуту диапазоны потерянных данных асинхронно вычисляются (достаточно эффективно) и выкачиваются из источника по конкретным диапазонам.
источник

AS

Arseny Snigirev in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
нет не фиксили, это очень древняя проблема, и neighbor это функция сирота которая никому не нужна, потому что это кривейший костыль, которым невозможно пользоваться
простите, что вмешиваюсь в пол первого ночи) но у меня в проекте на neighbor построена логика многих выборок и это очень полезная вещь в условиях отсутствия оконных функций)
источник

❌ Constantine ❌ in ClickHouse не тормозит
кто подскажет почему может не работать мерж кусков в таблице? сейчас накопилось 5к кусков. тотольное количество вот таках

268K ./2020-8_1438575_1438575_0
268K ./2020-8_1438576_1438576_0
284K ./2020-8_1438577_1438577_0
280K ./2020-8_1438579_1438579_0
284K ./2020-8_1438581_1438581_0
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Arseny Snigirev
простите, что вмешиваюсь в пол первого ночи) но у меня в проекте на neighbor построена логика многих выборок и это очень полезная вещь в условиях отсутствия оконных функций)
ну она работает в пределах блока, там результат у нее буквально undefined каждый раз, она не умеет group by,
т.е. это жалкое подобие того что можно выразить через массивы
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Artem
Данные прилетают по вебсокетам, иногда сеть отваливается, приложение падает, да хоть банально КХ обновить нужно. За эти секунды что-то не долетает и теряется. Раз в минуту диапазоны потерянных данных асинхронно вычисляются (достаточно эффективно) и выкачиваются из источника по конкретным диапазонам.
ну нужен какой-то ETL / стриминг, возьмите https://github.com/VKCOM/kittenhouse или кафку или что-нибудь подобное.
источник

AS

Arseny Snigirev in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
ну она работает в пределах блока, там результат у нее буквально undefined каждый раз, она не умеет group by,
т.е. это жалкое подобие того что можно выразить через массивы
а планируется в какой-то перспективе её замена на что-то более эффективное?
источник

A

Artem in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
ну она работает в пределах блока, там результат у нее буквально undefined каждый раз, она не умеет group by,
т.е. это жалкое подобие того что можно выразить через массивы
У меня не те масштабы. Сервак 600 MB RAM. Удивительно, что это все вообще работает.
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
❌ Constantine ❌
кто подскажет почему может не работать мерж кусков в таблице? сейчас накопилось 5к кусков. тотольное количество вот таках

268K ./2020-8_1438575_1438575_0
268K ./2020-8_1438576_1438576_0
284K ./2020-8_1438577_1438577_0
280K ./2020-8_1438579_1438579_0
284K ./2020-8_1438581_1438581_0
что в логах?
что в system.replication_queue?
что в system.merges ?
почему 5к?  по дефолту максимум 300
источник

❌ Constantine ❌ in ClickHouse не тормозит
select count() from system.replication_queue - 17k, ппц какой то. на соседнем шарде такого нет
источник

A

Artem in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
ну она работает в пределах блока, там результат у нее буквально undefined каждый раз, она не умеет group by,
т.е. это жалкое подобие того что можно выразить через массивы
Про массивы интересно. Подскажите, приблизительно, как пропуски можно находить через массивы? Массив должен помещаться в память? Есть ли способ сбрасывать на диск этот массив в крайних случаях, когда в память не поместился?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Arseny Snigirev
а планируется в какой-то перспективе её замена на что-то более эффективное?
вопрос непонятен, потому что есть массивы
ну window functions обещают в ближайшем столетии сделать
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Artem
Про массивы интересно. Подскажите, приблизительно, как пропуски можно находить через массивы? Массив должен помещаться в память? Есть ли способ сбрасывать на диск этот массив в крайних случаях, когда в память не поместился?
вам не подойдет. Массив должен помещаться в память
источник

AS

Arseny Snigirev in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
вопрос непонятен, потому что есть массивы
ну window functions обещают в ближайшем столетии сделать
хорошо, что такие планы есть) спасибо.
источник

A

Artem in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
вам не подойдет. Массив должен помещаться в память
Ну так и neighbor() работает корректно, если ему предварительно скормить отсортированный select, который можно сортировать, сбрасывая промежуточные результаты на диск.
источник

AS

Arseny Snigirev in ClickHouse не тормозит
и еще хотел спросить. иногда сталкиваюсь с ситуацией, когда невозможно убить запрос через KILL QUERY (видимо на этапе какой-то пост-обработки данных). Я, наверное, не первый кто это спрашивает, но быстрым поиском ответа не нашел. Есть какой-то лайфхак как останавливать его в таких случаях?
источник

A

Artem in ClickHouse не тормозит
Arseny Snigirev
и еще хотел спросить. иногда сталкиваюсь с ситуацией, когда невозможно убить запрос через KILL QUERY (видимо на этапе какой-то пост-обработки данных). Я, наверное, не первый кто это спрашивает, но быстрым поиском ответа не нашел. Есть какой-то лайфхак как останавливать его в таких случаях?
KILL ничего не убивает
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Artem
Ну так и neighbor() работает корректно, если ему предварительно скормить отсортированный select, который можно сортировать, сбрасывая промежуточные результаты на диск.
SELECT
   number AS x,
   neighbor(x, 1) AS y
FROM numbers(10)
ORDER BY x ASC
FORMAT TSV

0 1
1 2
2 3
3 0
4 5
5 6
6 7
7 0
8 9
9 0


угадайте почему у меня Y=0
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Arseny Snigirev
и еще хотел спросить. иногда сталкиваюсь с ситуацией, когда невозможно убить запрос через KILL QUERY (видимо на этапе какой-то пост-обработки данных). Я, наверное, не первый кто это спрашивает, но быстрым поиском ответа не нашел. Есть какой-то лайфхак как останавливать его в таких случаях?
kill ставит флаг kill=1 , запрос проверяет флаг между блоками данных, возможно из-за бага запрос завис на обработке блока, между проверками
источник

AK

Alex Krash in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
SELECT
   number AS x,
   neighbor(x, 1) AS y
FROM numbers(10)
ORDER BY x ASC
FORMAT TSV

0 1
1 2
2 3
3 0
4 5
5 6
6 7
7 0
8 9
9 0


угадайте почему у меня Y=0
SET max_block_size = 4
:)
источник