
Evgen
13.09.2018
06:49:52

Alexander
13.09.2018
08:42:34

Evgen
13.09.2018
08:43:06

Иван
13.09.2018
08:48:43
Подозреваю что вопрос уже был и не раз, но всё же: первичный ключ в *MergeTree таблицах. Использую CollapsingMergeTree, соответственно должен добавить в ключ колонку с id-шником, а у него высокая кардинальность (практически уникальный). Стоит ли вместо (xx,xxx,xxxx,id) сделать (xx,xxx,xxxx,hash(id),id), где hash(id) понизит кардинальность такого поля на несколько порядков ( (xx,xxx,xxxx) обладает малой кардинальностью)? Конечно hash(id) больше index_granularity во многих случаях, в каких случаях это даст выигрыш в производительности? hash(id) не очень дорогая функция.

Google

Alexey
13.09.2018
09:25:51
Привет. Подскажите пожалуйста, а как вытащить последний не нулевой элемент массива в ячейке?
У меня есть столбец с массивами, но все они разной длины. Если беру просто arr[-1], то он мне почти везде 0 выдает.

Ivan
13.09.2018
09:28:02

Alexey
13.09.2018
09:28:21

Igor
13.09.2018
09:30:04
select arrayFilter(x -> x !=0, [1,2,3,0,2,0])[-1];
Подскажи, что значит эта часть? [1,2,3,0,2,0]

Alexey
13.09.2018
09:30:15

Igor
13.09.2018
09:30:34
Аааа, всё спс.

Vladimir
13.09.2018
10:38:26
всем привет. это нормально, что текущая партиция в system.parts содержит на 2 порядка больше кусков, чем предыдущая? 1000 против 30-40
на ровном месте повалили мержи, пытаюсь разобраться, почему

Николай
13.09.2018
10:57:39
Подскажите, как в кликхаус сделать следующий запрос из постгреса https://dumpz.org/cYffQYBgRsBc То есть в нем, я для каждого dimension1 получаю цену с самой последней датой.

Kirill
13.09.2018
11:03:36

Paul
13.09.2018
11:05:05
SELECT *
FROM system.metrics
WHERE metric = 'MemoryTracking'
┌─metric─────────┬────────value─┬─description──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ MemoryTracking │ -69765993365 │ Total amount of memory (bytes) allocated in currently executing queries. Note that some memory allocations may not be accounted. │
└────────────────┴──────────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
скажите, а это фича или баг?
Версия КХ - 18.12.13

Vladimir
13.09.2018
11:06:57
Добрый день
Скажите а как объяснить что кол во селектов больше чем общее кол во запросов,
tsf-data24.us.com :) select * from system.events;
SELECT *
FROM system.events
┌─event───────────────────────────────────┬───────────value─┐
│ Query │ 68848667 │
│ SelectQuery │ 101904153 │
│ InsertQuery │ 513217 │
│ FileOpen │ 2778419186 │

Николай
13.09.2018
11:20:50

Google

Alexey
13.09.2018
11:25:43
Не пойму в чем прикол. Есть таблица в которой есть столбец с типом "Date".
Вставляю в него текущее UnixTime время, потом смотрю селектом что вставилось. А там 2020-08-06
Взял время из интернета, тогда показал вообще 2020-03-16

Alexey
13.09.2018
11:26:14
а зачем вы время вставляете в Date
в Date надо вставлять дату

Alexey
13.09.2018
11:26:29
Бля
точно
ссорян
за мат
спасибо =)

Wolf
13.09.2018
11:26:44
этож не datetime

Alexey
13.09.2018
11:26:53

Mike
13.09.2018
11:42:37
Коллеги, а не подкажете в какую сторону копать на тему "2018.09.13 14:40:54.368711 [ 8 ] <Error> dnl_int.dnl_log_local (StorageReplicatedMergeTree): DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Code: 10, e.displayText() = DB::Exception: Not found column size in block. There are only columns: , e.what() = DB::Exception" - колонка такая в самой таблице конечн же есть. Ругается на много подобных таблиц и только на поле size. С какой стороны начинать поиск?

Danil
13.09.2018
12:09:16
Привет всем.
Я тут попробовал подключить монгу в качестве словаря и столкнулся с невозможностью прокинуть поля из вложенных структур. Т.е. все верхнеуровневые поля видны нормально, а глубже уже нет. В конфиге имя атрибута указываю как Structure.FieldName, но возвращается пустое значение. Никто не сталкивался с подобным поведением?

Maxim
13.09.2018
12:17:09
Всем привет. Подскажите пожалуйста формат отправки метрик с тегами в carbon-clickhouse чем то отличается от нативного в graphite? Пробую вот так echo "my.awesome.metric1;tag1=sd;tag2=xz 11 $(date +%s)" | nc -w0 carbon-clickhouse 2003 и ничего не падает в кх.
не уверен что вопрос про кх, пойду продублирую в метрики его

Alexander
13.09.2018
12:25:48
подскажите, пожалуйста, нужно сделать INSERT SELECT FROM CROSS JOIN - все время упираюсь в нехватку памяти. Он то ли всю таблицу в голове пытается удержать, не пойму. Отдельные строки вроде большие, но не запредельные...

Michal
13.09.2018
12:32:03

Alexander
13.09.2018
12:37:08
Пытается
А в файл выгрузить и загрузить не поможет? Все равно сначала в памяти создаст?

Michal
13.09.2018
12:37:49
А вам правда нужен именно CROSS джойн?
Обычно в КХ хранят таблицы размерами в несколько миллионов строк (или миллиардов / триллионов). При CROSS джойн "на выходе" количество строк равно количеству строк в первой таблице, умноженному на количество строк в другой таблице. Если миллионы умножать на миллионы то сложно ожидать что в памяти поместится.

Google

Alexander
13.09.2018
12:46:02
У меня нетипичный случай. 10000 строк. Может правда что-то другое подойдёт лучше. Кстати, он что-то успевает насовать, хоть и падает. Наверно строки тяжёлые. Массивы.

Michal
13.09.2018
12:46:54
ок, а нет ли какого-то условия для сужения слияния? Вам точно нужно именно каждый с каждым?

Alexander
13.09.2018
12:52:05
Мне нужно все разные пары. Но с условием на различие падает ещё быстрее. Я пробовал поэтапно делать, с промежуточными таблицами.

Alexey
13.09.2018
12:57:07
Методом тыка удалось создать реплицируемую таблицу
CREATE TABLE lexa_test
(
id Int64,
i_env Int64,
i_customer Int64,
i_account Int64,
creation_date Date
)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/lexa_test', '{replica}', creation_date, creation_date, 8192)
но что это за параметры такие
creation_date, creation_date
если их не указывать
не создается реплицируемая таблица

Wolf
13.09.2018
12:58:29
ключ партицирования и праймери кей

Alexey
13.09.2018
12:58:45
это обязательные параметры получается ?

Wolf
13.09.2018
12:59:25
ну а как движок будет без них то

Denis
13.09.2018
13:00:27

Alexey
13.09.2018
13:00:32
Ладно я знаю что такое первичный ключ
а что такое ключ партицирования ? простыми словами
для чего он нужен ?
не пойму
Я просто хочу перевезти все текущие таблицы в реплицируемые. И сделать это максимально безболезнено. То есть по пути наименьшего сопротивления. Хочу обойтись минимальным количеством дополнительных параметров при создании реплицируемой таблицы.

Alexander
13.09.2018
13:04:08

Denis
13.09.2018
13:05:43
а что такое ключ партицирования ? простыми словами
чтобы виртуально разделить таблицу на несколько ( для ускорения select и для простоты управления таблицей ).
у вас два клиента -- партиционируем по клиенту ( select where client = 1 затрагивает пол таблицы, клиент ушел, дропаем все его данные одной командой ) .
Или партиционируем по-месячно, и запросы затрагивающие один, два... месяца ускоряются, и данные страше 4 месяцев легко удалить.
Первичный ключ для уменьшия занимаего места на диске, из-за сортировки, и опять-же для некоторого ускорения select.

Google

Denis
13.09.2018
13:05:52

Alexey
13.09.2018
13:08:29

Wolf
13.09.2018
13:08:54

Denis
13.09.2018
13:09:38


Egor
13.09.2018
13:09:43
добрый день
Имеется следующая ситуация:
Linux Debian-94-stretch-64-LAMP 4.9.0-6-amd64 #1 SMP Debian 4.9.82-1+deb9u3 x86_64 GNU/Linux
Версия КХ - 1.1.54394
Результат df -h:
Filesystem Size Used Avail Use% Mounted on
udev 32G 0 32G 0% /dev
tmpfs 6.3G 506M 5.8G 8% /run
/dev/md2 2.0T 974G 907G 52% /
tmpfs 32G 4.0K 32G 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 32G 0 32G 0% /sys/fs/cgroup
/dev/md1 488M 38M 424M 9% /boot
/dev/md3 42T 14T 27T 34% /home
tmpfs 6.3G 0 6.3G 0% /run/user/1005
tmpfs 6.3G 0 6.3G 0% /run/user/1001
tmpfs 6.3G 0 6.3G 0% /run/user/0
Я далек от администрирования и не очень соображаю в устройстве raid, но КХ явно хранит данные в /dev/md2, а хотелось бы конечно использовать память из /dev/md3.
Подскажите пожалуйста, можно ли это изменить в настройках КХ или следует менять что-то в ОС? Уместно ли спросить о каких-то best practice в данном случае?

Denis
13.09.2018
13:12:57
я бы смонтировал в линуксе md3 в /var/lib/clickhouse

Alexey
13.09.2018
13:13:16
Тут всплыла подсказка, при ошибочном создании таблицы типа ReplicatedMergeTree
ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/hits', '{replica}', EventDate, intHash32(UserID), (CounterID, EventDate, intHash32(UserID), EventTime), 8192)
То есть вместо EventDate я должен указать из своей таблицы столбец с датой
А вместо (CounterID, EventDate, intHash32(UserID), EventTime) указать стоблец с первичным ключом.
Верно понимаю ?

Wolf
13.09.2018
13:13:56
в праймери кее вы должны указать праймери кей который будет ускорять ваши запросы

Alexey
13.09.2018
13:14:31

Denis
13.09.2018
13:14:48
первичный ключ -- это ключ сортировки, его назвали неправильно в КХ, чтобы всех запутать.

Kirill
13.09.2018
13:15:35
Это была не единственная причина )

Alexey
13.09.2018
13:16:21
первичный ключ -- это ключ сортировки, его назвали неправильно в КХ, чтобы всех запутать.
Так где получается в этом списке
ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/hits', '{replica}', EventDate, intHash32(UserID), (CounterID, EventDate, intHash32(UserID), EventTime), 8192)
Primary Key ?
Это EventDate ? или CounterID ?
не пойму

Maxim
13.09.2018
13:17:39
(CounterID, EventDate, intHash32(UserID), EventTime)

Kirill
13.09.2018
13:17:59
Так где получается в этом списке
ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/hits', '{replica}', EventDate, intHash32(UserID), (CounterID, EventDate, intHash32(UserID), EventTime), 8192)
Primary Key ?
Это старый синтаксис, тут дата - это ключ партиционирования, потом ключ семплирования и сам ПК он задает сортировку

papa
13.09.2018
13:18:02
должно быть
партиционирование по EventDate,
семплирование по intHash32(UserID),
сортировка по (CounterID, EventDate, intHash32(UserID), EventTime)

Alexey
13.09.2018
13:18:35
понял
не просто

Google

Alexey
13.09.2018
13:18:42
сложно даже)
спасибо всем !
=)

Maxim
13.09.2018
13:19:06
Используй новый синтаксис он понятнее будет)

Alexey
13.09.2018
13:19:20
А где его почитать ?

Maxim
13.09.2018
13:20:44

Alexey
13.09.2018
13:21:26
Где Order By - это первичный ключ

Maxim
13.09.2018
13:22:08

Alexey
13.09.2018
13:22:22
Понял. Спасибо, буду игратся)

Egor
13.09.2018
13:23:33

Denis
13.09.2018
13:46:59
ну так перенесите куда-нибудь, откуда я знаю куда вам надо

Egor
13.09.2018
13:48:23
но само хранение данных КХ в любом случае не вариант никуда переносить, верно?

Alexey
13.09.2018
13:48:48
Все разобрался. Вдруг кто то такой же глупый как и я, будет искать пример создания по новому синтаксису, таблицы на движке Replicated Merge Tree.
Поясняю.
==============================
CREATE TABLE lexa_test
(
id Int64,
i_env Int64,
i_customer Int64,
i_account Int64,
creation_date Date
)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/lexa_test', '{replica}')
PARTITION BY creation_date
ORDER BY id
в PARTITION BY нужно указать имя столбца с типом данных Date
а в ORDER BY нужно указать стоблец который будет первичным ключом
#пример #ReplicatedMergeTree #новый #синтаксис