@clickhouse_ru

Страница 461 из 723
Gubaydullin
16.03.2018
15:28:39
─name──────────────────────────┐ │ 20130101_20130131_1_89_16 │ │ 20130131_20130131_90_90_0 │ │ 20130101_20130101_1070_1070_0 │ │ 20130201_20130227_91_166_14 │ │ 20130227_20130228_167_171_1 │ │ 20130301_20130331_172_261_16 │ │ 20130331_20130331_262_262_0 │ │ 20130401_20130429_263_344_15 │ │ 20130429_20130430_345_349_1 │ │ 20130501_20130529_350_431_15 │ │ 20130529_20130531_432_439_2 │ │ 20130601_20130629_440_521_15 │ │ 20130629_20130630_522_527_1 │ │ 20130701_20130731_528_617_16 │ │ 20130801_20130831_618_707_16 │ │ 20130901_20130929_708_789_15 │ │ 20130929_20130930_790_795_1 │ │ 20131001_20131031_796_884_16 │ │ 20131031_20131031_885_885_0 │ │ 20131101_20131129_886_967_15 │ │ 20131129_20131130_968_972_1 │ │ 20131201_20131231_973_1062_16 │ │ 20131231_20131231_1063_1063_0 │ │ 20140101_20140101_1064_1073_3

я же делал optimize table hit

он не сработал

как зафорсить merge?

Google
Vladislav
16.03.2018
15:29:16
OPTIMIZE FINAL можно попробовать

antuan
16.03.2018
15:29:20
Да, не можете, ClickHouse вам об этом намекает своим Exception
вижу. думал, может хитрость какая есть

Kirill
16.03.2018
15:29:51
вижу. думал, может хитрость какая есть
Есть, можно движок дописать чтоб он с ALTER работал ;)

antuan
16.03.2018
15:31:17
??? :) rename table offers to old_offers, new_offers to offers; RENAME TABLE offers TO old_offers, new_offers TO offers Received exception from server (version 1.1.54343): Code: 48. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Method rename is not supported by storage Dictionary. 0 rows in set. Elapsed: 0.033 sec.

antuan
16.03.2018
15:34:02
конфиг я изменил, добавил нужные атрибуты. хотелось бы их увидеть в соответствующей табличке

пришлось дропнуть старую и создать новую с нужными колонками

Gubaydullin
16.03.2018
15:34:44
OPTIMIZE TABLE hit FINAL Received exception from server (version 1.1.54362): Code: 36. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: FINAL flag for OPTIMIZE query is meaningful only with specified PARTITION. 0 rows in set. Elapsed: 0.038 sec.

нужно указывать конкретное имя партиции

для optimize final

а можете скинуть ссылку

где подробно описывается механизм схлопывания?

для CollapsingMergeTree

Google
Kirill
16.03.2018
15:37:52
где подробно описывается механизм схлопывания?
https://clickhouse.yandex/docs/en/table_engines/collapsingmergetree/

Gubaydullin
16.03.2018
15:38:14
При слиянии, для каждой группы идущих подряд одинаковых значений первичного ключа

вот это смущает

"группы идущих подряд"

то есть если запись была вставлена после миллиона записей

она не схлопнется?

с первой записью

которая имеет такой же pk

RUNET
16.03.2018
15:40:32
Чтобы схлопнулось, надо вставить 2 записи, старую и новую

Gubaydullin
16.03.2018
15:40:42
смотрите

запись под номером 1, pk x, sign 1, lead_id null

затем миллион записей вставлено

затем 2 записи:

pk x, sign -1, lead_id null

pk x sign 1, lead_id y

у меня почему-то не схлопывается

в базе так и висят три записи

RUNET
16.03.2018
15:44:43
если в миллионе записей ее не было, то по идеи все ок должно быть. проблем никаких не было

Alex
16.03.2018
15:44:55
Записи все в одной партиции?

Gubaydullin
16.03.2018
15:45:14
) ENGINE = CollapsingMergeTree(created_date, (stream_uuid, created_time, user_id, id), 8192, sign)

Google
Alex
16.03.2018
15:45:45
если created_date одинаковая, то да

Gubaydullin
16.03.2018
15:47:52


вот такое я сейчас наблюдаю



вот запрос который показывает что у записей pk одинаковый

я хотел обновить lead_id у первой

делал optimize table hit

Но не схлопнулись они

Александр
16.03.2018
16:02:56
Но не схлопнулись они
Надо сделать optimize партиции

И с final

Можно делать 100 оптимайзов таблицы, но каждый оптимайз мерджит часть данных

А не все данные

Я так почти несколько часов мерджил таблицу на 9 ярдов строк

Дубликаты чистил, подчистилось до 6 ярдов строк

Gubaydullin
16.03.2018
16:04:38
select distinct name from system.parts where active and table = 'hit'

а как узнать в какой именно партиции

находится запись

RUNET
16.03.2018
16:05:58
optimze table hits partition 201301 final по идеи так

Gubaydullin
16.03.2018
16:06:16
SELECT DISTINCT name FROM system.parts WHERE active AND (table = 'hit') AND (name LIKE '20130101%') ┌─name──────────────────────────┐ │ 20130101_20130131_1_89_16 │ │ 20130101_20130101_1070_1070_0

вот две таких партиции нашел

Google
Gubaydullin
16.03.2018
16:06:28
сейчас попробую

optimize table hit final '20130101_20130131_1_89_16' Syntax error: failed at position 26: optimize table hit final '20130101_20130131_1_89_16' Expected DEDUPLICATE

RUNET
16.03.2018
16:10:37
см. выше, поправил сообщение

Gubaydullin
16.03.2018
16:10:39
optimize table hit partition '201301' final

ух ты

вот так он отработал

Kirill
16.03.2018
16:10:59
RUNET
16.03.2018
16:11:00
ну и славненько)

Gubaydullin
16.03.2018
16:11:26
и схлопнул)

RUNET
16.03.2018
16:11:52
счастье было рядом)

Gubaydullin
16.03.2018
16:12:07
а по крону

optimize не вызывается?

с какой периодичностью будут идти схлопывания

Andrey
16.03.2018
16:13:34
не надо OPTIMIZE по крону.

Tima
16.03.2018
16:13:47
optimize не вызывается?
У нас частый optimize полгода назад стабильно приводил к падению КХ. Если сейчас не так - это было бы круто

Andrey
16.03.2018
16:13:50
Схлопывание кусков не гарантируется и нужно всегда брать с доаггрегацией

Gubaydullin
16.03.2018
16:14:08
я понимаю что в запросах нужно использовать * sign

и having

а как часто идет схлопывание

Александр
16.03.2018
16:14:24
У нас частый optimize полгода назад стабильно приводил к падению КХ. Если сейчас не так - это было бы круто
Это если реаликация есть. Я делал следующий оптимайз только после завершения предыдущего

Google
Александр
16.03.2018
16:14:27
Никакого крона :)

а как часто идет схлопывание
Как кх посчитает нужным

Если вставки нет вообще, то может раз в 30 минут например сработать

Если данные часто вставляются, то может между инсертами схлапывать

Andrey
16.03.2018
16:17:32
Я вот не совсем понимаю, зачем вам постоянный OPTIMIZE? Почему не делать все как рекомендует дока?

Gubaydullin
16.03.2018
16:18:02
то есть кх сам будет схлопывать

а мы будем просто запросы правильные писать

Andrey
16.03.2018
16:18:16
да, схлопывание происходит при мерже

время мержа не гарантируется

Gubaydullin
16.03.2018
16:18:35
спасибо ребят!

Александр
16.03.2018
16:18:54
Я вот не совсем понимаю, зачем вам постоянный OPTIMIZE? Почему не делать все как рекомендует дока?
Тяжелый случай :) скажу так, есть таблица в которой после полного схлапывания не больше 100к строк. Но она оооочень жирная. 130 колонок из них 120 - nested колонки.

И скорость обработки запроса должна быть высокая. А несхлопнутые данные убивают скорость

В нашем случае

Andrey
16.03.2018
16:19:58
спасибо ребят!
запросы главное с доаггрегацией, будто никакого схлапывания и нет.

Gubaydullin
16.03.2018
16:20:09
да я понял идею

Andrey
16.03.2018
16:20:20
И скорость обработки запроса должна быть высокая. А несхлопнутые данные убивают скорость
а перед схлопыванием много в ней? Это какая то часто обновляющаяся таблица?

Danz
16.03.2018
16:23:14
Привет. Кто-то делал запросы в кликхаус из pandas?

Andrey
16.03.2018
16:24:10
Привет. Кто-то делал запросы в кликхаус из pandas?
у меня ребята делали, а чего такое?

Александр
16.03.2018
16:25:30
а перед схлопыванием много в ней? Это какая то часто обновляющаяся таблица?
Данные туда летят постоянно. Перед схлапыванием там порядка 500к строк

Danz
16.03.2018
16:27:59
у меня ребята делали, а чего такое?
У меня какие-то разные ошибки, то 500, то хочет создать дата базу в ридонли режиме

Andrey
16.03.2018
16:28:35
У меня какие-то разные ошибки, то 500, то хочет создать дата базу в ридонли режиме
создание базы это sql алхимия делает. Есть у нее бага такая. про 500 надо в логи смотреть

Danz
16.03.2018
16:28:47
Достаточно ведь скачать библиотеку sqlalcheny-clickhouse, и она автоматом будет использоваться в pandas?

Страница 461 из 723