Size: a a a

ClickHouse не тормозит

2020 September 12

D

Dj in ClickHouse не тормозит
Alexey Milovidov
Презентация "Две низкоуровневые оптимизации, которые я сделал вчера": https://presentations.clickhouse.tech/database_saturday_2020/
Видео: https://youtu.be/chY9LnhLjco?t=8586

______

Юристам нужна наша помощь по логотипу, просьба потратить минутку на короткрий опрос: https://forms.yandex.ru/surveys/10022588.cef650836a35cf646d91bf2e532696e9660a2427/
кстати hugepages в оракл испольщуется для SGA  (buffer cache - скешированные в память блоки, in-memory tables, процедуры/бд код). Т.е. в терминологии КХ - данные default пользователя (не ассоциированные с запросом). Но в КХ таких данных мало обычно - (кеш засечек, метаданные, словари наверно, и вроде все)... Наверно можно разрешить КХ использовать N HP страниц  для словарей если их много с помощью параметра?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Artem
Или как можно значение из стобца преобразовать в константу INTERVAL 1 day, чтобы передать в toStartOfInterval(dt, INTERVAL 1 day)?
чего-то непонятно, почему нельзя SELECT toDateTime(toStartOfMonth(now()))
источник

A

Artem in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
чего-то непонятно, почему нельзя SELECT toDateTime(toStartOfMonth(now()))
у меня задача вместо 13 MV сделать 1 MV c arrayJoin(), что-то вроде

SELECT 
   type,
   symbol,
   interval,
   count()
FROM
(
   SELECT
       type,
       symbol,
       arrayJoin(['1m', '5m', '15m']) AS interval,
       trade_time
   FROM trades
   PREWHERE toYYYYMM(trade_time) = 201709
)
GROUP BY
   type,
   symbol,
   interval,
   transform(interval, ['1m', '5m', '15m'], [toStartOfInterval(trade_time, toIntervalMinute(1)), toStartOfInterval(trade_time, toIntervalMinute(5)), toStartOfInterval(trade_time, toIntervalMinute(15))], now()) AS int
ORDER BY
   type ASC,
   symbol ASC,
   interval ASC

, но оно так не работает.

То есть я сразу хочу агрегировать для разных интервалов времени в одну таблицу,  а потом фильтровать только пятиминутки, например для каждого symbol. Мне кажется, это будет эффективнее, чем 13 отдельных MV
источник

A

Artem in ClickHouse не тормозит
Похоже, это можно сделать через ARRAY JOIN arr1, arr2 а дальше группировать как хочется
источник
2020 September 13

N

Nick in ClickHouse не тормозит
Привет, подскажите, пожалуйста, для хранения таблички на 1,5млрд подойдёт движок MergeTree или это плохая практика и следует использовать что-то другое(обращаться к таблице будут не часто)?
источник

SC

Smoked Cheese in ClickHouse не тормозит
Nick
Привет, подскажите, пожалуйста, для хранения таблички на 1,5млрд подойдёт движок MergeTree или это плохая практика и следует использовать что-то другое(обращаться к таблице будут не часто)?
Можно считать что в кх есть только движок MergeTree
источник

АК

Анатолий Костюшин... in ClickHouse не тормозит
Nick
Привет, подскажите, пожалуйста, для хранения таблички на 1,5млрд подойдёт движок MergeTree или это плохая практика и следует использовать что-то другое(обращаться к таблице будут не часто)?
У нас пацаны тестили вроде на 1 млрд, и тесты дали положительный результат
источник

A

Artem in ClickHouse не тормозит
Nick
Привет, подскажите, пожалуйста, для хранения таблички на 1,5млрд подойдёт движок MergeTree или это плохая практика и следует использовать что-то другое(обращаться к таблице будут не часто)?
тут у пацанов/мужиков в чатике триллионы записей в MergeTree. У меня 3.3 млрд. на серваке с 600 МБ ОЗУ, например.
источник

КТ

Константин Трофимов... in ClickHouse не тормозит
Nick
Привет, подскажите, пожалуйста, для хранения таблички на 1,5млрд подойдёт движок MergeTree или это плохая практика и следует использовать что-то другое(обращаться к таблице будут не часто)?
вообще не показатель 1,5млрд
у кого то триллионы триллионов строк но широкие таблицы и выборки чуть ли не как примеры с доки, а у кого то миллионы строк но одна колонка дата в значении date а другая дата в значении data и там стринга  где все целиком напихано и оттуда select * делается.
Я сильно утрировал конечно, но идею думаю донес
источник

DZ

Dmitry Zaytsev in ClickHouse не тормозит
Подскажите пожалуйста, есть функция arrayReverseSplit - она дает такой результат  [[1599670340468,1599670340594]] а какой это тип данных? Если ставлю Array(UInt64) то ругается на конверсию типов
источник

l

lnuynxa in ClickHouse не тормозит
Dmitry Zaytsev
Подскажите пожалуйста, есть функция arrayReverseSplit - она дает такой результат  [[1599670340468,1599670340594]] а какой это тип данных? Если ставлю Array(UInt64) то ругается на конверсию типов
Array(Array(UInt64))
источник

DZ

Dmitry Zaytsev in ClickHouse не тормозит
спасибо :)
источник

pk

papa karlo in ClickHouse не тормозит
toTypeName()
источник

AM

Alexey Milovidov in ClickHouse не тормозит
Dj
кстати hugepages в оракл испольщуется для SGA  (buffer cache - скешированные в память блоки, in-memory tables, процедуры/бд код). Т.е. в терминологии КХ - данные default пользователя (не ассоциированные с запросом). Но в КХ таких данных мало обычно - (кеш засечек, метаданные, словари наверно, и вроде все)... Наверно можно разрешить КХ использовать N HP страниц  для словарей если их много с помощью параметра?
Да, надо снова попробовать. Если один раз аллоцировать и потом всё время использовать, то недостатков про которые говорил, быть не должно. А ещё jemalloc должен поддерживать huge pages, но кажется не пробовали.
источник

D

Dj in ClickHouse не тормозит
Alexey Milovidov
Да, надо снова попробовать. Если один раз аллоцировать и потом всё время использовать, то недостатков про которые говорил, быть не должно. А ещё jemalloc должен поддерживать huge pages, но кажется не пробовали.
Да, там суть в том, что ХП при загрузке процесса базы аллоцируются и остаются у процесса до смерти. Ещё защита есть, в виде параметра, чтобы когда SGA не может взять сконфигуренный объем ХП на старте, оно падает прям на старте. Это сделано чтобы при ошибке пользователя (задал в систему 10000 * 2 МБ=20ГБ ХП страниц, задал в настройке оракла что надо 30ГБ в ХП) или если другой процесс съел ХП, эти самые ХП не остались висеть без дела (они не могут ни под что использоватся).
источник

АФ

Александр Филиппов... in ClickHouse не тормозит
Почему может не работать репликация? Делал всё по инструкции https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/replication/ , но при вставе записи на первом сервере, она не появляется на втором
источник

D

Dj in ClickHouse не тормозит
настройки какие?
проверьте system.replication_queue на всех репликах.
источник

АФ

Александр Филиппов... in ClickHouse не тормозит
У меня этого параметра в конфиге вообще нет
источник

АФ

Александр Филиппов... in ClickHouse не тормозит
SELECT *
FROM replication_queue

Row 1:
──────
database:               test
table:                  clicks
replica_name:           02
position:               0
node_name:              queue-0000000000
type:                   GET_PART
create_time:            2020-09-13 11:39:29
required_quorum:        0
source_replica:         01
new_part_name:          202009_0_0_0
parts_to_merge:         []
is_detach:              0
is_currently_executing: 0
num_tries:              46
last_exception:         Poco::Exception. Code: 1000, e.code() = 111, e.displayText() = Connection refused (version 20.8.2.3 (official build))
last_attempt_time:      2020-09-13 11:59:41
num_postponed:          0
postpone_reason:
источник

АФ

Александр Филиппов... in ClickHouse не тормозит
всё, нашел проблему)
источник