clickhouse_ru | Unsorted

Telegram-канал clickhouse_ru - ClickHouse не тормозит

11238

Обсуждаем ClickHouse

Subscribe to a channel

ClickHouse не тормозит

Для этого придумали движок базы replicated

Читать полностью…

ClickHouse не тормозит

Не на каждую году, а на каждый шард! В этом весь цимес! Предполагая что выполнив на любом шарде create database, автоматом создасться бд и на реплике.
А это не так!
Я понимаю, что ситуация не обычная. Просто потому что все пишут on cluster. Но! Для любого нормального человека существует иерархия
Кластер
|-- шард
|--Реплика
Так вот создавая БД на уровне шарда, ты автоматом создаёшь бд на уровне реплики
В текущей реализации все совсем не так (и в это есть определенная логика) - репликация идёт на уровне таблиц. Т.е. по факту можно создать в кластере! таблицу на шарде 2, реплике 3, и он нигде вообще не будет доступна, кроме как если обратишься именно к этому хосту.

Имеет ли право на жизнь такая логика? Конечно имеет. Кто-нибудь использует эту разницу внутри шарда? Очень сомневаюсь.
Реплика, имхо, не может быть на уровне таблицы (в кластере иначе это не реплика). Реплика, имхо, долга быть уровне хоста. В этом хитрость. А ReplicatedMergeTree юзать в очень и очень редких случаях

Читать полностью…

ClickHouse не тормозит

изначально в КХ не было on cluster (надо было писать собственную автоматизацию которая подключалась к каждой ноде кластера и выполняла create)

потом где-то в конце 2018 добавили on cluster, но КХ не понимал что таблица replicated и выполнял все команды избыточно на всех нодах, и пытался добавить колонку на каждой реплике в шарде

затем где-то в 2020 это исправили

Читать полностью…

ClickHouse не тормозит

Немного непонятен ваш вопрос. Вы не указали распределённый запрос изначально. Затем пошли на каждую ноду отдельно создавать базу - и она не создалась нигде ? Тогда это странный первый кейс.
Агая варианта два. Откуда клик должен знать"где" вы хотите создать базу. Это вам не потоковая репликация в пг, тут всё иначе.

Читать полностью…

ClickHouse не тормозит

create database if not exists mydatbase on cluster ...

или я не понял, у меня много кластеров
один называется segmented там все ноды КХ как шарды из одной реплики, т.е. 50 серверов, 50 шардов
другой называется segmented_mirrored там x шардов n реплик, т.е. 25 шардов * 2 реплики

я бы выполнял
create database on ... cluster segmented
create table on ... cluster segmented
alter table xxx on ... cluster segmented_mirrored add column ..

Читать полностью…

ClickHouse не тормозит

По дефолту Atomic стоит для БД. Но вот встретился с такой хренью (сейчас мне кажется что раньше такого не было, но не 100%).
Итак, кластер - несколько шардов. На каждый шард по реплике..все вроде норм. Создаю create database (коннект к шарду в целом, а не к хосту), без on cluster.
Ну бывает, мало ли. Shit happens.. далее осознав что 'on cluster' забыт коннекчусь к каждому шарду и создаю там БД (проблема-то? 😃).
И тут оказывается, что ни на одной реплике бд не создалась.
Т.е..по факту, (это пример) если у тебя 50 шардов с 2мя репликами, и ты хочешь создать бд на 25 шардах, то у тебя два варианта:
1) создать БД on cluster и потом на на 50= 25*2 удалить
2) сразу не тупить и создавать бд на каждом хосте?

Читать полностью…

ClickHouse не тормозит

То есть например я разработчик, база данных replicated, но я создаю там внутри MergeTree. По логике вещей резработчика он хочет видеть ее и на других репликах, но получается на одной только оно создается 🤔

Читать полностью…

ClickHouse не тормозит

а если внутри этой базы создашь не ReplicatedMergeTree, а просто MergeTree, то таблица не реплицируется, ведь так же получается?

Читать полностью…

ClickHouse не тормозит

Немного понять можно? (Риторический вопрос).
Почему, блин, создавая БД без ON Cluster, БД не создаётся на реплике? Ну ведь бред, нет?

Читать полностью…

ClickHouse не тормозит

Немного занялся документацией своего драйвера КХ на Haskell (и по совместительству формализации протокола). Добавил генерацию описания пакетов. Верстка пока скудная, а формализация далека до полноты, но представляет рабочее подмножество, а документация всегда совпадает с реализацией

Буду рад звездочкам или контрибьютерам (если тут кому-то интересен Haskell😅)
https://clickhaskell.dev/protocol/server

Читать полностью…

ClickHouse не тормозит

Причем вставка во временную таблицу 1с
А перегрузка из нее в основную таблицу 6с и утилизация ядер

Читать полностью…

ClickHouse не тормозит

В новых кх клиентах если пробел нажать профайлер показывает

Читать полностью…

ClickHouse не тормозит

Не знаю, я бы попробовал выгрузить в csv файл и загрузить из файла и посмотреть сколько инсерт из файла ест.

Читать полностью…

ClickHouse не тормозит

for future reference: в пару к index_mark_cache_size, есть метрика IndexMarkCacheBytes, чтобы понять не пора ли его бампнуть

Читать полностью…

ClickHouse не тормозит

@den_crane в чате не хватает реакций конечно. большое агрегированное спасибо за ваши рассказы!

Читать полностью…

ClickHouse не тормозит

Ладно. Мне не впадлу пройтись по 1005000 шардам, грохнуть везде базы и заново создать "on cluster"

Читать полностью…

ClickHouse не тормозит

Фига, забавно. Спасибо за ликбез.

Читать полностью…

ClickHouse не тормозит

Как-то усложнили тут и вводите в мысли. То есть в рамках кластера segmented где описан еще кластер segmented_mirror вы создаете БД, таблицу, но на mirror добавляете в эту таблицу колонку ?

Читать полностью…

ClickHouse не тормозит

но вообще мне кажется КХ сам догадывается и create database on cluster делает на всех нодах кластера, не важно кто там шард, кто реплика

Читать полностью…

ClickHouse не тормозит

Соррян. Про таблицы все ясно без слов. Мы говорим про бд

Читать полностью…

ClickHouse не тормозит

ddl таблицы реплицируется , т.е. она создастся , данные не реплицируются.

в cloud engine подменяется на SharedMergeTree

Читать полностью…

ClickHouse не тормозит

Или высплывет ошибка?

Читать полностью…

ClickHouse не тормозит

(я не настоящий сварщик, описываю ощущения)
контептуально, это все давно изменилось (2021г)

https://clickhouse.com/docs/engines/database-engines/replicated

если вы используете database engine = replicated
то тогда там on cluster не нужен вообще, база занимается структурой таблиц без всякого on cluster
несколько лет эта фигня была experimental, но ее срочно доделали для clickhouse cloud и у них она используется в prod режиме везде уже пару лет.

и ноды(сервера) не имеют жестой привязки к шардам, репликам, т.е. если есть 12 серверов, это может быть 12*1, 1*12, 2*6, 6*2, 4*3, 3*4 и нода не знает что она реплика и какой она шард.

Читать полностью…

ClickHouse не тормозит

Вообще это странно, должно быть наоборот. эти параметры ставят что парт будет любого размера, и это вынуждает КХ создать огромный парт и отсортировать в памяти, я бы ни рисковал и поставил min_insert_block_size_bytes = '10Gi' чтобы макс. размер парта был 10гб

Читать полностью…

ClickHouse не тормозит

мне помогли вот такие опции
"SET min_insert_block_size_rows = 0",
"SET min_insert_block_size_bytes = 0"

какие могут быть подводные камни,если у меня запрос будет работать раз в день добавляя по 100 тыс строк с этими опциями? Изначально много партов создастся, но вроде как они быстро фоново склеиваются

Читать полностью…

ClickHouse не тормозит

Я пока только поймал виноватых по логам и перегрузка из временных, которых больше нет.

Так что нужно еще воспроизвести :)

Читать полностью…

ClickHouse не тормозит

Да, пока версия что там в полях чуть ли не doc файлы.
Буду разбираться что там на такой банальщине так на ядра налегает

Читать полностью…

ClickHouse не тормозит

там все время улучшают, но суть в том что DateTime64 это децимал и там в общем случае нужна точка (dot) , чтобы отделить дробную часть от целой части секунд
т.е. либо 1759496469.555 либо 2025-10-03 15:01:54.555
но в разных версиях по разному, КХ пытаются научить угадывать что имелось в виду под 1759496469555 -- это наносекунды или секунды, но это типа тут работает (insert values), а вот тут не работает (insert csv).

Читать полностью…

ClickHouse не тормозит

Привет! Вставляю из другой базы в кликхаус таймстемпы
Поле в которое вставляю названо так же timestamp, тип данных выставил DateTime64(N)

При N от 3 до 8 данные вставляются, однако кастятся не верно
Дело в том, что таймстемпы даны с точностью до наносекунд (например 1642435541563013422) и для них N от 3 до 8 неверно интерпретируется.
Но при DateTime64(9) - появляется ошибка:

 Decimal math overflow: while converting source column timestamp to destination column timestamp: while executing 'FUNCTION _CAST(timestamp :: 6, DateTime64(9) :: 21) -> _CAST(timestamp, DateTime64(9)) DateTime64(9)


Согласно доке DateTime64(9) - должен работать. Прошёлся по чату - здесь вроде тоже такие примеры были. Был похожий вопрос в чате 4 года назад, но его решили через обновление версии КХ. У меня версия более поздняя чем в кейсе - 25.3. Так что я думаю, что я делаю что-то не так

Подскажите пожалуйста, куда стоит глянуть, чтобы понять в чем проблема?

Читать полностью…

ClickHouse не тормозит

Тупо drop table ...??

Читать полностью…
Subscribe to a channel