Size: a a a

ClickHouse не тормозит

2021 January 29

L

Lamobot in ClickHouse не тормозит
Alexander
да, я всё это знаю, однако объяснение это не помогает найти.

Если он false, то distributed должен сам разнести по репликам? если так, то каждая реплика должна ещё внутрее реплици .... кажется ответ понятен: internal_replication = false отключает внутреннюю репликацию => поведение будет одинаковое по сути, только через разные механизмы (какой из них лучше не важно)
Он не относится к distributed никак! Репликация и distributed таблицы это разные механизмы!!!
источник

A

Alexander in ClickHouse не тормозит
ошибка, что я думал, что internal_replication влияет на distributed только, но он влияется и на поведение реплицируемых таблиц видимо (по сути отключает)
источник

L

Lamobot in ClickHouse не тормозит
Alexander
ошибка, что я думал, что internal_replication влияет на distributed только, но он влияется и на поведение реплицируемых таблиц видимо (по сути отключает)
Distributed - это просто таблица, вы залили туда данные, КХ их по шардам разбросал.
источник

A

Alexander in ClickHouse не тормозит
Lamobot
Он не относится к distributed никак! Репликация и distributed таблицы это разные механизмы!!!
я понимаю что технически это разные механизмы, однако, когда в CH ещё не было RMT, то для этого использовали distributed (т.е. некая такая ручная репликация) - разве не так?
источник

A

Alexander in ClickHouse не тормозит
Lamobot
Distributed - это просто таблица, вы залили туда данные, КХ их по шардам разбросал.
по шардам И репликам?
источник

L

Lamobot in ClickHouse не тормозит
Alexander
по шардам И репликам?
Если стоит internal_replication=true, то она закинет в шард на одну из реплик, дальше вторая реплика заберёт данные, когда прочитает с ЗК таск. Вроде так это происходит.
источник

A

Alexander in ClickHouse не тормозит
Lamobot
Если стоит internal_replication=true, то она закинет в шард на одну из реплик, дальше вторая реплика заберёт данные, когда прочитает с ЗК таск. Вроде так это происходит.
да, именно, у меня точно такое же представление. однако если стоит false, то он закинет на все реплики. Но что произойдёт после этого? будут ли реплики продолжать репликацию друг на друга? т.е. реагируют ли он на этот internal_replication тоже?
источник

L

Lamobot in ClickHouse не тормозит
Alexander
да, именно, у меня точно такое же представление. однако если стоит false, то он закинет на все реплики. Но что произойдёт после этого? будут ли реплики продолжать репликацию друг на друга? т.е. реагируют ли он на этот internal_replication тоже?
Если стоит false, то реплики не занимаются репликацией, этим занимаются клиенты. Не уверен насчёт distributed, скорее всего он также закидывает на обе сам.
источник

A

Alexander in ClickHouse не тормозит
Lamobot
Если стоит false, то реплики не занимаются репликацией, этим занимаются клиенты. Не уверен насчёт distributed, скорее всего он также закидывает на обе сам.
просто раньше, как только появился RMT то был вариант не делать RMT, а иметь просто MT, и тогда понятно что он не будет реплицировать (так как не умеет), однако не очень очевидно, что есть возможность у RMT отключить функционал репликаций поставивив internal == false
источник

A

Alexander in ClickHouse не тормозит
"Если он выставлен в false (по умолчанию), то данные будут записываться на все реплики. По сути, это означает, что Distributed таблица занимается репликацией данных самостоятельно"

т.е. влияние на distributed описано и понятно, а вот влияние на RMT не очень - может отключать, а может и не отключать, и тут вот уже появляются вопросы
источник

A

Alexander in ClickHouse не тормозит
в исходниках видно только это: https://github.com/ClickHouse/ClickHouse/blob/04e222f6f38acb0d9395751aeb8c5096fb484f0a/src/Interpreters/Cluster.cpp#L387

которое _кажется_ влияет только на distributed
источник

L

Lamobot in ClickHouse не тормозит
Alexander
в исходниках видно только это: https://github.com/ClickHouse/ClickHouse/blob/04e222f6f38acb0d9395751aeb8c5096fb484f0a/src/Interpreters/Cluster.cpp#L387

которое _кажется_ влияет только на distributed
Судя по доке влияет только на distributed - да.
источник

A

Alexander in ClickHouse не тормозит
тогда возникает вопрос - если оно false - должно происходить дублирование данных? но этого почему-то не происходит у меня в тесте. false => как бы делается два insert на разные части реплики, но может быть какой-то механизм защиты от этого присутствует, но с ходу не очень понятно
источник

SC

Smoked Cheese in ClickHouse не тормозит
В RMT есть встроенная дедупликация данных при вставке
источник

A

Alexander in ClickHouse не тормозит
Smoked Cheese
В RMT есть встроенная дедупликация данных при вставке
ага, спасибо, но как оно работает в данном случае (из distributed)? т.е. вероятно можно понять по какому-то query_id что это дубликат, или же он какой-то более универсальный и работает и без distributed?
источник

SC

Smoked Cheese in ClickHouse не тормозит
Alexander
ага, спасибо, но как оно работает в данном случае (из distributed)? т.е. вероятно можно понять по какому-то query_id что это дубликат, или же он какой-то более универсальный и работает и без distributed?
Одинаковые данные создадут одинаковый блок с одинаковым хешем
источник

SC

Smoked Cheese in ClickHouse не тормозит
Хешики в зукипере хранятся
источник

A

Alexander in ClickHouse не тормозит
Smoked Cheese
Одинаковые данные создадут одинаковый блок с одинаковым хешем
у меня остался вопрос по тому что именно включают в себя данные. потому как, например, если только значения вставки - так никто не может запретить дубликаты вставлять. а если какую-то мета-информацию, то это объясняет
источник

SC

Smoked Cheese in ClickHouse не тормозит
Alexander
у меня остался вопрос по тому что именно включают в себя данные. потому как, например, если только значения вставки - так никто не может запретить дубликаты вставлять. а если какую-то мета-информацию, то это объясняет
Только сами данные
источник

SC

Smoked Cheese in ClickHouse не тормозит
Если ты делаешь постоянно одинаковые инсерты, то этот механизм для тебя работать не будет
источник