Size: a a a

ClickHouse не тормозит

2020 June 29

M

Mikhail in ClickHouse не тормозит
Mikhail
привет, а подскажите плз, может кто из сорцов собирает, у меня ругается на config_opt_safety_checks, то что не объявлено
v20.3.12.112-stable
где задается JEMALLOC_OPT_SAFETY_CHECKS? через env?
с jemalloc 5.1 собирается
источник

ИИ

Илья Ибрагимов... in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
вам стоит понять простую вещь. ZK in-memory db. На диске хранится только бекап. При старте ZK восстанавливает свое состояние в памяти читая последний снепшот + логи после снепшота.
мне казалось, что эти настройки должны очищать логи и снэпшоты?

autopurge.snapRetainCount=10
autopurge.purgeInteval=1
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Mikhail
с jemalloc 5.1 собирается
в дев чатике попробуйте спросить
источник

M

Mikhail in ClickHouse не тормозит
спасибо
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Илья Ибрагимов
мне казалось, что эти настройки должны очищать логи и снэпшоты?

autopurge.snapRetainCount=10
autopurge.purgeInteval=1
имхо ротарор тупо удаляет 11й снепшот, переименовывает 10 в 11, и т.д.
источник

ИИ

Илья Ибрагимов... in ClickHouse не тормозит
то есть, удалять логи все равно надо вручную, с помощтю zkCleanup.sh?
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Илья Ибрагимов
то есть, удалять логи все равно надо вручную, с помощтю zkCleanup.sh?
ну один раз файлы старые удалите руками rm, новое должно удалятся само если правильно настроили
источник

ИИ

Илья Ибрагимов... in ClickHouse не тормозит
понял, спасибо!
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Required Optional
Доброго, коллеги! Я так понимаю неяндексовые боты спят? У меня вопрос про индексы, если кто сможет помочь, то я буду благодарен. Вопрос: у меня есть примари ключ, который по умолчанию из секции ордер бай. Есть запросы, которые включают еще пару полей типа инт64 (хэш 63 бита) и короткий инт с двумя значениями. Здешние кулибины предлагают блум фильтер с примари ключем и этими двумя полями и гранулярностьб в 1. Я же пользуясь подходами элементарной логики и интуиции предпологаю, что достаточно добавить на каждое дополнительное поле по индексу типа минмакса и это будет более оптимально с точки зрения использования ресурсов и скорости. Помогите понять ошибаюсь ли я и где?
а вам точно КХ нужен, это противоестественное использование, КХ не для точечных запросов, может postgresql или с* ?
источник

ED

Evgeniy Devyatykh in ClickHouse не тормозит
подскажите, пожалуйста, что можно подкрутить для ускорения таких запросов
SELECT get_time, value
FROM `table`
PREWHERE(source_id, get_time) IN
(
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
UNION ALL
SELECT source_id, min(get_time) FROM `table`
PREWHERE source_id=333415 AND get_time>'2020-06-26 09:00:00'
GROUP BY source_id
)


к такой таблице условно (колонок больше конечно)
CREATE TABLE `table` ( 
 `source_id` UInt32,
 `get_time` DateTime ,
 `value` Float64
)  ENGINE = MergeTree()
PARTITION BY toYYYYMM(get_time)
ORDER BY (source_id,get_time)


т.е. доставание строк до и после некоторого произвольного момента времени
когда запросы одиночные - всё нормально, но стоит дать скажем 100rps (да я понимаю, что это натягивание совы на глобус наверное, но может как-то можно подкрутить)
начинает жрать проц, iops мало при этом жрёт, LA зашкаливает и всё раком становится
4.5 млрд строк таблица/100Gb если без тюнинга кодеков на колонках
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Evgeniy Devyatykh
подскажите, пожалуйста, что можно подкрутить для ускорения таких запросов
SELECT get_time, value
FROM `table`
PREWHERE(source_id, get_time) IN
(
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
UNION ALL
SELECT source_id, min(get_time) FROM `table`
PREWHERE source_id=333415 AND get_time>'2020-06-26 09:00:00'
GROUP BY source_id
)


к такой таблице условно (колонок больше конечно)
CREATE TABLE `table` ( 
 `source_id` UInt32,
 `get_time` DateTime ,
 `value` Float64
)  ENGINE = MergeTree()
PARTITION BY toYYYYMM(get_time)
ORDER BY (source_id,get_time)


т.е. доставание строк до и после некоторого произвольного момента времени
когда запросы одиночные - всё нормально, но стоит дать скажем 100rps (да я понимаю, что это натягивание совы на глобус наверное, но может как-то можно подкрутить)
начинает жрать проц, iops мало при этом жрёт, LA зашкаливает и всё раком становится
4.5 млрд строк таблица/100Gb если без тюнинга кодеков на колонках
ожидаемое поведение, все так и должно быть.


SELECT source_id, max(get_time) FROM table -- КХ не умеет max брать из индекса, если вы на это рассчитывали. Ну индекс sparsed поэтому ... .аааа

можно хранить max уже готовый в отдельной таблице
источник

RO

Required Optional in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
а вам точно КХ нужен, это противоестественное использование, КХ не для точечных запросов, может postgresql или с* ?
да это не точечные запросы. Там несколько десятков миллиардов линий. И надо делать выборку. Просто есть два типа запросов, в котором есть первичный ключ и второй где его дополняют два столбца. Вот поэтому интересуюсь индексами чтобы сделать оптимально...
источник

RO

Required Optional in ClickHouse не тормозит
С добрым утром, я так понимаю :)
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Required Optional
да это не точечные запросы. Там несколько десятков миллиардов линий. И надо делать выборку. Просто есть два типа запросов, в котором есть первичный ключ и второй где его дополняют два столбца. Вот поэтому интересуюсь индексами чтобы сделать оптимально...
Ясно, видимо я ничего не пойму без примеров, я текст читаю по диагонали
источник

ED

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


SELECT source_id, max(get_time) FROM table -- КХ не умеет max брать из индекса, если вы на это рассчитывали. Ну индекс sparsed поэтому ... .аааа

можно хранить max уже готовый в отдельной таблице
так не знаю я max/min - это для нахождения окружающих некую точку во времени записей. для самой последней я конечно MV сделал.
index granularilty если поменьше выкрутить? не поможет?
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Evgeniy Devyatykh
так не знаю я max/min - это для нахождения окружающих некую точку во времени записей. для самой последней я конечно MV сделал.
index granularilty если поменьше выкрутить? не поможет?
ну покажите статистику из клиента

я ожидаю для запроса 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
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
хотя можно же max брать с помощью order by, а order by по индексу
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
можно попробовать


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
источник

RO

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

K

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