

Vladislav
14.10.2018
18:28:14
array=(
ch1 ? SELECT min(date) from Stats where date=today() and length(processlist)<>0 limit 1;
SELECT min(date)
FROM Stats
WHERE (date = today()) AND (length(processlist) != 0)
LIMIT 1
↓ Progress: 196.61 thousand rows, 200.04 MB (643.49 thousand rows/s., 654.71 MB/s.) 2%Received exception from server (version 18.12.17):
Code: 241. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Memory limit (for query) exceeded: would use 12.13 GiB (attempt to allocate chunk of 4294967296 bytes), maximum: 9.31 GiB: (while reading column processlist): (while reading from part /var/lib/clickhouse/data/projectName/Stats/20181013_20181014_31568_32714_5/ from mark 3 with max_rows_to_read = 65536).
0 rows in set. Elapsed: 0.473 sec. Processed 196.61 thousand rows, 200.04 MB (415.44 thousand rows/s., 422.68 MB/s.)
ch1 ? SELECT min(date) from Stats where date=today() and arrayElement(processlist,1)<>'' limit 1;
SELECT min(date)
FROM Stats
WHERE (date = today()) AND (processlist[1] != '')
LIMIT 1
↙ Progress: 131.07 thousand rows, 117.53 MB (1.13 million rows/s., 1.01 GB/s.) 1%Received exception from server (version 18.12.17):
Code: 241. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Memory limit (for query) exceeded: would use 12.20 GiB (attempt to allocate chunk of 4294967296 bytes), maximum: 9.31 GiB: (while reading column processlist): (while reading from part /var/lib/clickhouse/data/projectName/Stats/20181014_20181014_32715_33209_4/ from mark 182 with max_rows_to_read = 65536).
0 rows in set. Elapsed: 0.279 sec. Processed 131.07 thousand rows, 117.53 MB (470.07 thousand rows/s., 421.49 MB/s.)


Denis
14.10.2018
18:31:49
а если ну max_memory_usage = поставить в 20ГБ
или
settings optimize_move_to_prewhere=0,max_block_size=100000

Google


Vladislav
14.10.2018
18:32:27
Сейчас вот на таком куске упал:
51M /var/lib/clickhouse/data/projectName/Stats/20181014_20181014_33334_33449_3/processlist.bin
ch1 ? SELECT min(date) from Stats where date=today() and arrayElement(processlist,1)<>'' limit 1 settings optimize_move_to_prewhere=0,max_block_size=100000;
SELECT min(date)
FROM Stats
WHERE (date = today()) AND (processlist[1] != '')
LIMIT 1
SETTINGS optimize_move_to_prewhere = 0, max_block_size = 100000
↓ Progress: 507.90 thousand rows, 545.72 MB (240.86 thousand rows/s., 258.79 MB/s.) █████████████▋ 7%Received exception from server (version 18.12.17):
Code: 241. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Memory limit (for query) exceeded: would use 9.61 GiB (attempt to allocate chunk of 536870912 bytes), maximum: 9.31 GiB: (while reading column processlist): (while reading from part /var/lib/clickhouse/data/projectName/Stats/20181014_20181014_32715_33209_4/ from mark 162 with max_rows_to_read = 8192).
0 rows in set. Elapsed: 2.183 sec. Processed 507.90 thousand rows, 545.72 MB (232.69 thousand rows/s., 250.01 MB/s.)
ch1 ? SELECT min(date) from Stats where date=today() and arrayElement(processlist,1)<>'' limit 1 settings optimize_move_to_prewhere=0,max_memory_usage=21474836480;
SELECT min(date)
FROM Stats
WHERE (date = today()) AND (processlist[1] != '')
LIMIT 1
SETTINGS optimize_move_to_prewhere = 0, max_memory_usage = 21474836480
DB::Exception: Received from localhost:9000, ::1. DB::Exception: Memory limit (for query) exceeded: would use 9.37 GiB (attempt to allocate chunk of 536870912 bytes), maximum: 9.31 GiB: (while reading column processlist): (while reading from part /var/lib/clickhouse/data/proj/Stats/20181014_20181014_32715_33209_4/ from mark 54 with max_rows_to_read = 8192).
0 rows in set. Elapsed: 1.302 sec. Processed 270.34 thousand rows, 281.73 MB (207.62 thousand rows/s., 216.37 MB/s.)
помоему не работает тут max_memory_usage
О!


Denis
14.10.2018
18:36:29
да, тут не работает, до запроса через set , либо в профиле пользователя

Vladislav
14.10.2018
18:36:30
ch1 ? SELECT min(date) from Stats where date=today() and arrayElement(processlist,1)<>'' limit 1 settings optimize_move_to_prewhere=0,max_block_size=1000, max_memory_usage=21474836480;
SELECT min(date)
FROM Stats
WHERE (date = today()) AND (processlist[1] != '')
LIMIT 1
SETTINGS optimize_move_to_prewhere = 0, max_block_size = 1000, max_memory_usage = 21474836480
┌──min(date)─┐
│ 2018-10-14 │
└────────────┘
1 rows in set. Elapsed: 7.318 sec. Processed 7.00 million rows, 7.80 GB (956.29 thousand rows/s., 1.07 GB/s.)
max_block_size=1000 помогло
notEmpty тоже с max_block_size=1000 прошел


Denis
14.10.2018
18:37:33
на самом деле возможно уменьшилось дефолтное значение max_memory_usage с 15 до 10,в одной из версий, я не помню
откатиться скорее всего вам можно только на 1.1.54378, я бы попробовал откатится на 1.1.54394
Настройка use_minimalistic_checksums_in_zookeeper таблиц семейства ReplicatedMergeTree включена по-умолчанию. Эта настройка была добавлена в версии 1.1.54378, 2018-04-16. Установка версий, более старых, чем 1.1.54378, становится невозможной.

Vladislav
14.10.2018
18:45:28
Ну нам этот запрос нужен только для того, что бы определить с когда clear column делать)
так, теперь осталось вторая проблема)

Google

Vladislav
14.10.2018
18:49:07
ну судя по всему действительно надо для старый партиций optimize

Denis
14.10.2018
18:50:31
в чем отличие второй проблемы от первой?

Vladislav
14.10.2018
18:50:54
в одной памяти не хватает, во второй колонку не видит(Not found column processlist in block)

Denis
14.10.2018
18:51:20
так и что SETTINGS optimize_move_to_prewhere = 0 не помогает?
сделайте select any(date) from (select * .....)

Vladislav
14.10.2018
18:53:14
да, помогло. Сорри)
Спасибо большое! Много нового узнал)
Какой-то баг репорт по итогу нужен на гитхаб?
15гб РАМ на кусок размером в 51мб(на диске)- немного странно. Хотя скорее не баг, а вопрос к оптимизатору

Denis
14.10.2018
18:55:42
это баг, ну сделайте issue, без примера на воспроизведения в этом мало смысла конечно.
что у вас в массивах лежит?
сколько строк и насколько длинные?

Vladislav
14.10.2018
18:56:29
список процессов у пользователя
где-то 100 штук
до 30 символов

Denis
14.10.2018
18:57:07
процессы? типа ps -ef ?

Аки
14.10.2018
18:57:53
Код не выполняется должным образом. Попытайтесь выяснить, почему.function multiply(a, b){
a * b
}

Vladislav
14.10.2018
18:57:56

Аки
14.10.2018
18:58:00
как решить ?
javaScript

Google

Аки
14.10.2018
18:58:30
Код не выполняется должным образом. Попытайтесь выяснить, почему.function multiply(a, b){
a * b
}
gjvjubnt
помогите

Vladislav
14.10.2018
18:58:55
При установки десктоп софта запоминаем что было у юзера в момент инсталла,а потом шьем ко всем событиям. Уникальных наборов от силы 2-3гб на всех юзеров

Denis
14.10.2018
18:59:22

Vladislav
14.10.2018
19:00:44
Могу попросить данные перелить из кластера на отдельный сервер, и дать к нему доступ.
Что бы на живую смогли ломать\чинить

Denis
14.10.2018
19:01:52
я не разработчик и не работаю в яндексе, я такой же сисадмин, мне доступ не нужен если че.

Vladislav
14.10.2018
19:02:45
А, понял.

serge
14.10.2018
19:34:35
При загрузке данных в python с помощью clickhouse-sqlalchemy
не загружает первую строку с данными, остальные данные приходят.
Кто-нибудь сталкивался с этим? @tkostyan можешь подсказать куда копать?

Kostya
14.10.2018
19:37:02

serge
14.10.2018
19:40:50

Lesha
14.10.2018
20:07:15
Делаю запрос вида:
SELECT
A,
toString(B) as bb,
toString(SUM(C)) as cc
FROM table
GROUP BY A, bb
B и C это Decimal128(18)
или нужно как-то иначе приводить decimal к стрингу?

Denis
14.10.2018
20:09:59
Decimal экспериментальный тип данных, поэтому ничего удивительного

Lesha
14.10.2018
20:10:24
ну так по логике я верно делаю же да?

Denis
14.10.2018
20:12:09
да, все верно.
может так прокатит
select A, bb, toString(cc) from (
(SELECT
A,
toString(B) as bb,
SUM(C) as cc
FROM table
GROUP BY A, bb)

Google

Lesha
14.10.2018
20:12:31
вот да, тоже так пробую уже

Kirill
14.10.2018
20:13:51
https://github.com/yandex/ClickHouse/blob/150be189ac557ca2793b65a4b83642b2f4fe3842/dbms/src/Columns/ColumnDecimal.h#L92
а data точно никогда не может быть null? или pos?

Lesha
14.10.2018
20:17:42

Denis
14.10.2018
20:19:09
а чему cc вообще равен? null ? написать coalesce(sum(C), 0) as cc

Lesha
14.10.2018
20:21:58
тот же самый запрос с UInt64 работает
null нету, сам вставлял

Denis
14.10.2018
20:30:19
я воспроизвел это из-за group by b

Lesha
14.10.2018
20:31:43
Ошибка точно в Group by
без group by по decimal работает
да

Denis
14.10.2018
20:35:45
как всегда хак конкатенации помогает обмануть самых умных
SELECT
A,
toString(B)||'' as bb,
toString(SUM(C)) as cc
FROM table
GROUP BY A, bb
добавил https://github.com/yandex/ClickHouse/issues/3378

Lesha
14.10.2018
20:54:46
о боги, хак работает!
спасибо за помощь

Denis
14.10.2018
20:57:42
Это неожиданно, но видимо КХ понимает, что group by можно сделать до toString.

Lesha
14.10.2018
22:46:02
Гайз, можете помочь составить запрос в КХ?
получить первый и последний элемент отсортированой выборки агрегированый по полю?
условно, есть длинная табличка: ID, DateInterval, Volume
хочу сделать типа такого запроса:
SELECT
timeInterval,
first(Volume),
last(Volume)
FROM table
GROUP BY timeInterval
ORDER BY ID
я так понимаю нужно использовать функции высшего порядка вроде arrayFirst или еще чего
или что-то вроде
SELECT
timeInterval,
(SELECT Volume where min ID in timeInterval),
(SELECT Volume where max ID in timeInterval)

Artem
14.10.2018
23:23:30
select timeInterval, max((ID, Volume)), min((ID, Volume)) from table group by timeInterval

papa
14.10.2018
23:36:32
а может argmax/argmin?

Google

Lesha
14.10.2018
23:37:37

Алексей
15.10.2018
06:24:22
time_

Lesha
15.10.2018
07:27:49
Как-то можно из под тюпла в селекте один элемент выбрать?
SELECT
MAX((ID, Volume))[1]
FROM ...
??

Vladimir
15.10.2018
07:32:12

Lesha
15.10.2018
07:34:33
спасибо!

Алексей
15.10.2018
07:44:57

Vladimir
15.10.2018
07:46:18

Sergey
15.10.2018
07:48:48
Exception on client:
Code: 115. DB::Exception: Unknown setting allow_experimental_low_cardinality_type
ClickHouse server version 18.12.54407.
Вроде версия достаточная для того, чтобы использовать, ан не даёт
Кто-нибудь сталкивался?

Kirill
15.10.2018
07:50:30

Vladimir
15.10.2018
07:55:27
Да у многих языков нумерация элементов в массиве начинается с 1:
https://en.wikipedia.org/wiki/Comparison_of_programming_languages_%28array%29#Array_system_cross-reference_list

Kirill
15.10.2018
07:56:29

Алексей
15.10.2018
07:57:41
А что значит max((ID, Volume)) - максимум кортежа? А как он определяется?

Artem
15.10.2018
08:07:15
По порядку, сначала сортируется по ID, потом по Volume и тд

Алексей
15.10.2018
08:13:07
спасибо, это полезно

Alexey
15.10.2018
08:54:08
@kshvakov Кирилл добрый день !
Мы столнкулись со странной проблемой при использования вашего Go драйвера.
Когда вставляем "2018-10-15 11:36:53" в поле DateTime то почему-то получается +3 часа.
Хотя и на сервере где установлен ClickHouse и где работает приложение, время используется серверное 11:36:53. Но когда выполняем вставку, и смотрим результат то плолучаем время 14:36:53
На компьютере где выполняем запрос в API стоит 11 часов, на сервере где запущено API тоже 11 часов, на сервере где стоит ClickHouse тоже 11. Но вставляется 14.

Wolf
15.10.2018
08:54:52
По дефолта вроде utc

Alexey
15.10.2018
08:55:23
При том что если выполняем insert через clickhouse-client или DBeaver то время вставляется корректно
выглядит так, как будто драйвер + 3 добавляет нарочно

Wolf
15.10.2018
08:57:16
+3 это UTC ?