-> MergeTree , по доке ).
Мне хочется, что бы данные поэнергичнее становились доступны для селектов. Так вот, не пойму, в какой момент данные мержатся в основную таблицу.
На Kafka таблице указал kafka_max_block_size = 20000; stream_flush_interval_ms - по умолчанию (7500).
Правильно ли я понимаю, что логика такая:
Консумер ждёт 7,5 секунд. Если это время прошло, либо до этого момента уже пришло 20000 сообщений (не записей) из кафки, то он отправляет эти данные на мерж. При этом если CH видит, что он ещё не перемержил предыдущую порцию, то CH сначала перемерживает между собой то, что нужно вставить, а уже потом перемерживает с основной таблицей. Так?
И ещё вопросы: Если я уменьшу max_insert_block_size, то у меня поэнергичнее будет мержиться в основную таблицу? Т.е. max_insert_block_size независим от потабличной kafka_max_block_size?
Где есть перечисление настроек, которые можно задавать потаблично (а то про kafka_max_block_size можно только в багтрекере прочитать, а не на clickhouse.yandex ).
Если я настрою: Kafka -> MaterializedView -> Distributed -> MergeTree , то у меня увеличится скорость появления данных в основной таблице?
И вообще, может где-то можно почитать про выделение железа под желательную нагрузку на CH?
Kafka engine читает kafka_max_block_size пока не прочитает все нужное кол-во. Перекладывает их в свой буфер, в момент перекладывания проверяет stream_flush_interval_ms и max_insert_block_size и либо флашит его в таблицу либо нет.
Обсуждают сегодня