
Pavel
20.04.2018
11:15:44
два кристалла по 48 ядер

Гаврилов
20.04.2018
11:16:05
а сколько стоит?)

Pavel
20.04.2018
11:16:23
около 300 баксов/месяц у packet.net
у scaleway можно решительно дешевле взять если поиграться, там 16ти ядерные машинки есть по 34 евро где-то

Google

Гаврилов
20.04.2018
11:16:54
интересно

Alexander
20.04.2018
11:17:01
неплохо

Anton
20.04.2018
11:17:04
Но оно же не для БД...

Гаврилов
20.04.2018
11:17:15
а с чем по производительности можно эту машинку сравнивать?
пару современных зеонов обойдут?
да даже не современных
пару какихнить 2680v2

Pavel
20.04.2018
11:18:30
у нас на работе была статья, но там квалкоммы - https://blog.cloudflare.com/arm-takes-wing/

Kirill
20.04.2018
11:19:43
У вас и вторая статья была https://blog.cloudflare.com/neon-is-the-new-black/

Anton
20.04.2018
11:19:53
Оно же для обработки с помощью огромного числа потоков "мелких" данных, вот их вотчина

Pavel
20.04.2018
11:20:28
почему? отдельные ядра не так и плохи, в районе 2ггц частота
CH же отлично скалится по числу ядер
собственно отсюда и интерес =)

Google

Anton
20.04.2018
11:21:31
• 78K-Icache and 32K-D cache per core, 16 MB shared L2
мне кажется вот это будет узким местом для БД

prll
20.04.2018
11:25:59
Ну и скорость каждого арм ядра в несколько раз ниже чем у x86

Pavel
20.04.2018
11:27:09
@proller а как вообще вам интересно на арм собираться? Машины под тесты раздают в ряде проектов

prll
20.04.2018
11:30:29
всмысле? Практической пользы нет, а for fun все собирается и работает на 40$ платах

Pavel
20.04.2018
11:32:39
я скорее про серьезные машины, что я привел выше. платы за 40 баксов, конечно, фан
ну и собирать на плате за 40 баксов - будет вечность
собственно, сборочки бинарные поэтому хочется
собственно конкретно вот эти ребята: https://www.worksonarm.com/
дают железо серьезным опенсорс проектам, кому интересна поддержка ARM64 под CI и тестовые нужды

Беслан
20.04.2018
11:42:32
там глядишь, и на Raspberry запустим)

Pavel
20.04.2018
11:43:21
почему бы и нет, CH идеален для IOT
метрики там всякие укладывать/логгировать, IOT контроллеры, огромный рынок)

prll
20.04.2018
12:04:16

Беслан
20.04.2018
12:05:49
просто тестовый стенд. кажется, больше незачем

prll
20.04.2018
12:51:00
вот тесты там не все проходят - есть различия с float и не только

Pavel
20.04.2018
13:23:22
вот это как раз плохо ?

molo4ko
20.04.2018
14:10:20
А есть какой-то более общий аналог toUInt32OrZero? чтобы принимал аргумент вместо 0?

Google

Kirill
20.04.2018
14:32:39
Добрый вечер!
Подскажите, пожалуйста, есть ли в CH диспетчеризация запросов на чтение в рамках одного инстанса? Или же просто каждый запрос изолированно исполняется в отдельном треде, а там уж как получится

Vladimir
20.04.2018
14:46:24

molo4ko
20.04.2018
14:46:56
Спасибо

Serge
20.04.2018
15:13:26
Приветствую всех!
Птяница вечер, проблема с ждойнами возникла:
мне нужно выполнить пару десятков разных запросов, каждый раз джойня с другой таблицей. Для этого сделал отдельную таблицу с движком join и одним полем url_hash.
Выполняю запрос вида:
SELECT redirect_to_url_hash AS url_hash
FROM pages
ANY INNER JOIN pages_uniq USING url_hash
GROUP BY redirect_to_url_hash
ругается Not found column url_hash in block. There are only columns: redirect_to_url_hash
можно ли как то задать все таки алиас?


Denis
20.04.2018
15:13:49
Есть запрос, и успешно выполняется: SELECT count() FROM t PREWHERE bububu;
если добавить where (SELECT count() FROM t PREWHERE bububu WHERE row LIKE '%tututu%'
запрос падает
DB::Exception: Memory limit (for query) exceeded: would use 64.26 GiB (attempt to allocate chunk of 34359738368 bytes), maximum: 50.00 GiB: (while reading column row): (while reading from part
ну и в общем известна причина, в некоторых строках в этом row, может лежать строка до 400МБ.
При этом КХ смог это туда успешно записать, смержить, оно там давно успешно лежит.
Вопрос. Можно-ли каким-то параметром уговорить select выполнится? Т.е. видимо проблема в том что select читает пачку (много строк за раз) из колонки, декомпрессит и тут ему не хватает памяти.

?
20.04.2018
15:19:19

Serge
20.04.2018
15:20:40
не получилось
сейчас завел с
SELECT url_hash, 1 as vtype, value
FROM (
select redirect_to_url_hash as url_hash, toUInt64(COUNT(*)) AS value
from pages
where toStringCutToZero(redirect_to_url_hash) != '' AND status_code = 301
GROUP BY redirect_to_url_hash
)
ANY INNER JOIN pages_uniq USING url_hash

?
20.04.2018
15:20:49
точнее, непонятно откуда join из какой таблицы?

Serge
20.04.2018
15:21:14
join идет с таблицей
create table pages_uniq (
url_hash FixedString(40)
) ENGINE = Join(ANY, INNER, url_hash)

Kukuzapa
20.04.2018
15:50:58
А ClickHouse умеет select в json'е отдавать?

Maksim
20.04.2018
15:51:13

GithubReleases
21.04.2018
01:24:49
yandex/ClickHouse was tagged: v1.1.54380-stable
Link: https://github.comhttps://github.com/yandex/ClickHouse/releases/tag/v1.1.54380-stable
Release notes:
v1.1.54380-stable

Harry
21.04.2018
08:10:20
Всем привет! Вопрос такой - если дефолтную партицию (месяц) уменьшить до дня, скажется ли это на скорости поиска?

Evgeny
21.04.2018
08:11:36
Зависит от запросов - если они будут из одной патриции (дня) то будет даже быстрее за счёт меньшего размера

Kukuzapa
21.04.2018
08:18:29
Я правильно понимаю, что партиция формируется раз в месяц автоматически?
И надо ли при селектах указывать партицию как-либо?

Дмитрий
21.04.2018
08:20:10
да и желательно в PREWHERE. Без условия ограничивающего данные по ключу партиционирования может быть очень медленно

Kukuzapa
21.04.2018
08:23:09
Это на оба вопроса "да" или на какой-то из них?
Ключ партицирования - это date?

Google

Дмитрий
21.04.2018
08:24:37
на второй. Партиция формируется автоматически. Но не раз в месяц, а когда есть данные для этой партиции. То есть вы можете писать "в будущее" и соответствующие партиции будут созданы
ключ партиционирования вы указываете при создании таблицы. По умолчанию подразумевается что его формат будет date, но можно выбрать другое подходящее условие

Kirill
21.04.2018
08:25:40

Harry
21.04.2018
08:26:54

Kukuzapa
21.04.2018
09:05:15
Совсем дурацкий вопрос, но как в clickhouse-client делать перевод на следующюю строку?

Алексей
21.04.2018
09:16:04
коллеги, добрый день!
подскажите, детерминировано ли поведение для ReplacingMergeTree
CREATE TABLE Test (
date Date,
key Int32,
value Int32,
version UInt8
)
ENGINE = ReplacingMergeTree(date, (key, value), 8192, version)
вставляю строки
insert into Test values(today(), 1, 1, 0);
insert into Test values(today(), 1, 2, 0);
дальше хочу получить значение последней вставки
делаю так:
select argMax(value, version) from Test;
всегда ли я буду получать значение 2, или могу и на 1 "налететь"?
или есть какой-то ещё способ достать заведомо последние значения из ReplacingMergeTree?


Александр
21.04.2018
09:17:15
коллеги, добрый день!
подскажите, детерминировано ли поведение для ReplacingMergeTree
CREATE TABLE Test (
date Date,
key Int32,
value Int32,
version UInt8
)
ENGINE = ReplacingMergeTree(date, (key, value), 8192, version)
вставляю строки
insert into Test values(today(), 1, 1, 0);
insert into Test values(today(), 1, 2, 0);
дальше хочу получить значение последней вставки
делаю так:
select argMax(value, version) from Test;
всегда ли я буду получать значение 2, или могу и на 1 "налететь"?
или есть какой-то ещё способ достать заведомо последние значения из ReplacingMergeTree?
С argMax всегда получите последнее значение
Можно сделать и с final
Но может быть медленно

Алексей
21.04.2018
09:19:58
Можно сделать и с final
с final это как именно?
select * from Test final; даёт все строки таблицы, а не только последнюю

Maxim
21.04.2018
10:09:10

Kirill
21.04.2018
14:16:47

Denis
21.04.2018
14:49:24
с final это как именно?
select * from Test final; даёт все строки таблицы, а не только последнюю
у вас PK (key, value), а replace идет по PK, иначе как КХ догадается какие записи надо реплейсить
1 , 2 != 1 , 1
вам надо ENGINE = ReplacingMergeTree(date, (key), 8192, version)
но на самом деле разницы между final и argMax(value, version) по скорости не будет, это внутри насколько я понимаю одинаково примерно устроено.