Size: a a a

ClickHouse не тормозит

2021 February 18

D

Danil in ClickHouse не тормозит
Добрый день!
Вопрос от новичка в КХ:
Нужно сохранять в таблицу записи конфигурации и затем читать самое последнее значение из базы по набору ключей.
Т.к. в КХ нет автоинкремента, а так же не поддерживается изменение уже существующих записей, то нужно как то определить что эта запись самая свежая при том что все поля в записи могут совпадать с более старыми.

Подскажите в какую сторону копать?
Была идея добавить поле с таймстампом, но я не нашёл функции генерации такого типа в документации
источник

DT

Dmitry Titov in ClickHouse не тормозит
Danil
Добрый день!
Вопрос от новичка в КХ:
Нужно сохранять в таблицу записи конфигурации и затем читать самое последнее значение из базы по набору ключей.
Т.к. в КХ нет автоинкремента, а так же не поддерживается изменение уже существующих записей, то нужно как то определить что эта запись самая свежая при том что все поля в записи могут совпадать с более старыми.

Подскажите в какую сторону копать?
Была идея добавить поле с таймстампом, но я не нашёл функции генерации такого типа в документации
....
ts DateTime DEFAULT now();
...
источник

DT

Dmitry Titov in ClickHouse не тормозит
А так стоит посмотреть на ReplacingMergeTree
источник

I

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

мне надо закрепиться на какой то версии, т.к. использовал 19.6.2.11, а она не запускается у меня нормально через оператор в кубе
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Slach
такое ощущение что память аллоцируется все равно на финальной стадии
@den_crane @unamedrus IMHO интересный кейс

а можно все таки SHOW CREATE TABLE расшарить?
результат агрегации каждой 1/256 конечного результата должен влезать в память. Поэтому в финале может не хватить памяти.
источник

D

Danil in ClickHouse не тормозит
Dmitry Titov
....
ts DateTime DEFAULT now();
...
спасибо
now() возвращает время с точностью 1 секунда, а мне хотелось бы получить с точностью до миллисекунд в идеале.
Или иметь другой ключ, гарантированно определяющий порядок записей в базе
источник

ВР

Вячеслав Ракицкий... in ClickHouse не тормозит
Вячеслав Ракицкий
Подскажите как получить текущее время в UTC. Почему-то не работают функции работы с timeZone, возможно(скорее всего) что-то делаю не так
Вдруг кому-то пригодится select toDateTime(toString(now()), 'UTC');
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Andrey
День добрый. Есть такой запрос:
SELECT
   any(device) AS device,
   any(line_item_id) AS line_item_id,
   any(tactic) AS tactic,
   any(target) AS target,
   any(line_item_name) AS line_item_name,
   any(line_item_name_2) AS line_item_name_2,
   any(outside_target_dma) AS outside_target_dma,
   any(creative) AS creative,
   date AS date,
   any(inside_target_dma) AS inside_target_dma,
   toFloat64(sum(impression * __sign)) AS impression,
   any(channel) AS channel,
   __account_id AS account_id
FROM impressions_4930
GROUP BY
   date,
   __account_id,
   __row_hash,
   __row_id
HAVING sum(__sign) > 0

Таблица использует CollapsingMergeTree, поля в GROUP BY составляют ключ сортировки, короче - используем способ из документации для выполнения агрегаций без SELECT...FINAL. Правда, запрос превышает лимиты по памяти. Я последовательно снижал значение max_bytes_before_external_group_by и в итоге достиг значения в 20000000 (20 мегабайт), но результат не меняется:
Code: 241. DB::Exception: Received from localhost:9000. DB::Exception: Memory limit (for query) exceeded: would use 46.57 GiB (attempt to allocate chunk of 4216924 bytes), maximum: 46.57 GiB: While executing AggregatingTransform. 

В чем может быть причина?
set distributed_aggregation_memory_efficient=1
set aggregation_memory_efficient_merge_threads=2
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Danil
спасибо
now() возвращает время с точностью 1 секунда, а мне хотелось бы получить с точностью до миллисекунд в идеале.
Или иметь другой ключ, гарантированно определяющий порядок записей в базе
DateTime64(3) Default now64(3)
источник

D

Danil in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
DateTime64(3) Default now64(3)
Похоже, то что нужно
Спасибо!
источник

S

Slach in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
результат агрегации каждой 1/256 конечного результата должен влезать в память. Поэтому в финале может не хватить памяти.
источник

M7

MaZaHaKa 7 in ClickHouse не тормозит
источник

A

Andrey in ClickHouse не тормозит
@den_crane @BloodJazMan благодарю
источник

A

Aleksey in ClickHouse не тормозит
Привет! Можете подсказать, есть ли рекурсивные запросы в кликхаусе? У меня сейчас древовидная структура в mariadb, хотим перейти на кликхаус.
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Aleksey
Привет! Можете подсказать, есть ли рекурсивные запросы в кликхаусе? У меня сейчас древовидная структура в mariadb, хотим перейти на кликхаус.
нет и не планируются (в ОЛАП это не нужно и сделать тяжело)
источник

E

Edya in ClickHouse не тормозит
Aleksey
Привет! Можете подсказать, есть ли рекурсивные запросы в кликхаусе? У меня сейчас древовидная структура в mariadb, хотим перейти на кликхаус.
Есть иерархические словари, которые частично решают некоторые кейсы
источник

DC

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

мне надо закрепиться на какой то версии, т.к. использовал 19.6.2.11, а она не запускается у меня нормально через оператор в кубе
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Вячеслав Ракицкий
Подскажите как получить текущее время в UTC. Почему-то не работают функции работы с timeZone, возможно(скорее всего) что-то делаю не так
toTimezone меняет метаданные столбца, это влияет на рендеринг в строки. Скорее всего вам нужно другое, но сложно ответить потому что неизвестно что вам надо (куда вы хотите выстрелить)
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Рязанский Михаил
Всем привет!
Подскажите плз, что можно попробовать сделать

Есть такой запрос

Select count() from table
prewhere (code, dt ) in ( select code, max(dt) from table group by code )

Работает за 400мс

В самой табле 23м
Выборка 119к

Сортировка по code, dt
Гранулярность 8192

Что тут сделано не так и как можно ускорить ?
так а внутренний запрос сколько работает?

(code, dt ) in ( select -- сломали недавно

можно сделать примерно тоже самое черз argmax -- но выберется одна строка для каждого макс
источник

ВР

Вячеслав Ракицкий... in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
toTimezone меняет метаданные столбца, это влияет на рендеринг в строки. Скорее всего вам нужно другое, но сложно ответить потому что неизвестно что вам надо (куда вы хотите выстрелить)
Спасибо, я разобрался. Просто отображает дату уже с timeZone сервера, а если как строка , то тогда отображает дату по другому.
источник