184 похожих чатов

Привет всем. Может, кто сталкивался с ограничением мерджей?

В одной таблице в партиции уже 1000 партов, иногда в логах вижу задержку вставки на 8мс, больше ничего необычного не вижу, партиции небольшие, может есть какие-то параметры?

20 ответов

11 просмотров

сколько из этих партов active ? как вставляете какими кусками? задержка это походу у вас Throttling SELECT * FROM system.events WHERE event ILIKE '%inserts%';

Vadim-Metikov Автор вопроса
Slach [altinity]
сколько из этих партов active ? как вставляете как...

Все активные, если не только активные, то 1100-1200, Куски по 5-8м строк, строки по 150 байт примерно,

Vadim-Metikov Автор вопроса
Slach [altinity]
сколько из этих партов active ? как вставляете как...

ILIKE не нашел, версия 19.15.4, но SELECT * FROM system.events WHERE event LIKE '%nserts%' ┌─event──────────────────────┬─value─┬─description──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ DelayedInserts │ 3269 │ Number of times the INSERT of a block to a MergeTree table was throttled due to high number of active data parts for partition. │ │ DelayedInsertsMilliseconds │ 14336 │ Total number of milliseconds spent while the INSERT of a block to a MergeTree table was throttled due to high number of active data parts for partition. │ └────────────────────────────┴───────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

Vadim-Metikov Автор вопроса
Slach [altinity]
сколько из этих партов active ? как вставляете как...

Даже ст тротлингом вставки идут , не отставая, почему парты не смердживаются, не ясно, всера было 400 кусков активных, а сегодня выросло и не падает, хотя ресурсы(диск, проц, память, воркеры) - есть, может какой-то лимит сверху говорит, мерджить мелкими пачками или что-то ещё?

max_bytes_to_merge_at_max_space_in_pool 161061273600 больше этого размера парта мерджи не будут происходить так же мерджи не будут происходить на больших партах если меньше 8 (number_of_free_entries_in_pool_to_lower_max_size_of_merge) потоков свободно в пуле

Vadim-Metikov Автор вопроса
【D】【J】
max_bytes_to_merge_at_max_space_in_pool 161061273...

max_bytes_to_merge_at_max_space_in_pool - нет такой настройки, number_of_free_entries_in_pool_to_lower_max_size_of_merge - это имя метрики?

Vadim Metikov
max_bytes_to_merge_at_max_space_in_pool - нет тако...

select * from system.merge_tree_settings s where name like '%merge%';

Vadim-Metikov Автор вопроса
【D】【J】
select * from system.merge_tree_settings s where n...

SELECT * FROM system.merge_tree_settings WHERE name LIKE '%merge%' ┌─name──────────────────────────────────────────────────────┬─value─────────┬─changed─┬─description────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ max_bytes_to_merge_at_max_space_in_pool │ 4394967296000 │ 1 │ Maximum in total size of parts to merge, when there are maximum free threads in background pool (or entries in replication queue). │ │ max_bytes_to_merge_at_min_space_in_pool │ 1048576 │ 0 │ Maximum in total size of parts to merge, when there are minimum free threads in background pool (or entries in replication queue). │ │ max_replicated_merges_in_queue │ 16 │ 0 │ How many tasks of merging and mutating parts are allowed simultaneously in ReplicatedMergeTree queue. │ │ number_of_free_entries_in_pool_to_lower_max_size_of_merge │ 8 │ 0 │ When there is less than specified number of free entries in pool (or replicated queue), start to lower maximum size of merge to process (or to put in queue). This is to allow small merges to process - not filling the pool with long running merges. │ │ prefer_fetch_merged_part_time_threshold │ 3600 │ 0 │ If time passed after replication log entry creation exceeds this threshold and sum size of parts is greater than "prefer_fetch_merged_part_size_threshold", prefer fetching merged part from replica instead of doing merge locally. To speed up very long merges. │ │ prefer_fetch_merged_part_size_threshold │ 10737418240 │ 0 │ If sum size of parts exceeds this threshold and time passed after replication log entry creation is greater than "prefer_fetch_merged_part_time_threshold", prefer fetching merged part from replica instead of doing merge locally. To speed up very long merges. │ │ enable_vertical_merge_algorithm │ 1 │ 0 │ Enable usage of Vertical merge algorithm. │ │ vertical_merge_algorithm_min_rows_to_activate │ 131072 │ 0 │ Minimal (approximate) sum of rows in merging parts to activate Vertical merge algorithm. │ │ vertical_merge_algorithm_min_columns_to_activate │ 11 │ 0 │ Minimal amount of non-PK columns to activate Vertical merge algorithm. │ │ min_merge_bytes_to_use_direct_io │ 10737418240 │ 0 │ Minimal amount of bytes to enable O_DIRECT in merge (0 - disabled). │

Vadim-Metikov Автор вопроса
【D】【J】
select * from system.merge_tree_settings s where n...

│ merge_with_ttl_timeout │ 86400 │ 0 │ Minimal time in seconds, when merge with TTL can be repeated. │ └───────────────────────────────────────────────────────────┴───────────────┴─────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

Vadim Metikov
SELECT * FROM system.merge_tree_settings WHERE nam...

select * from system.metrics m where metric like '%Background%Task%'; смотрите сколько у вас активных мерджей и других тасков в пуле

так КХ искусственно тормозит инсерты https://clickhouse.tech/docs/ru/operations/settings/merge-tree-settings/#max-delay-to-insert

Vadim-Metikov Автор вопроса
【D】【J】
select * from system.metrics m where metric like '...

SELECT metric, value FROM system.metrics WHERE metric LIKE '%Background%' ┌─metric───────────────────────────────────┬────────value─┐ │ BackgroundPoolTask │ 13 │ │ BackgroundSchedulePoolTask │ 0 │ │ MemoryTrackingInBackgroundProcessingPool │ -2915439214 │ │ MemoryTrackingInBackgroundSchedulePool │ -37714090936 │ └──────────────────────────────────────────┴──────────────┘

Vadim Metikov
SELECT metric, value FROM system.metrics W...

если тасков 40. проблемы быть не должно.. даже не знаю, может версия старая/баги

Vadim Metikov
SELECT metric, value FROM system.metrics W...

ещё может быть что места на диске нет. Смотрите в логи, там увидите ошибки почему мерджи не идут

Vadim-Metikov Автор вопроса
【D】【J】
ещё может быть что места на диске нет. Смотрите в...

Место есть и КХ это видит: <Debug> DiskSpaceMonitor: Reserving 1.00 MiB on disk default, having unreserved 4.85 TiB.

Vadim-Metikov Автор вопроса
【D】【J】
ещё может быть что места на диске нет. Смотрите в...

А по какому слову искать, в логе ошибок не вижу: по этой таблице идут мерджи: 2021.01.26 17:47:53.456366 [ 41 ] {} <Debug> default.graphite_week2 (MergerMutator): Merging 6 parts: from 20210125_37176_37176_0 to 20210125_37181_37181_0 into tmp_merge_20210125_37176_37181_1 2021.01.26 17:47:53.456738 [ 41 ] {} <Debug> default.graphite_week2 (MergerMutator): Selected MergeAlgorithm: Horizontal

Vadim-Metikov Автор вопроса
【D】【J】
ну попробуйте "Not executing log entry"

Есть такие: 2021.01.26 18:04:29.154304 [ 37 ] {} <Debug> default.graphite_week2 (ReplicatedMergeTreeQueue): Not executing log entry for part 20210111_177490_178692_422 because another log entry for the same part is being processed. This shouldn't happen often. и 2021.01.26 08:42:37.323698 [ 30 ] {} <Debug> default.graphite_week2 (ReplicatedMergeTreeQueue): Not executing log entry MERGE_PARTS for part 20210125_29062_29098_2 because source parts size (1.20 GiB) is greater than the current maximum (304.36 MiB). - это когда воркеры заканчивались

Vadim Metikov
Есть такие: 2021.01.26 18:04:29.154304 [ 37 ] {} <...

ну значит workerы все же заканчиваются, несмотря на то, что их 40 =) посчитайте в логах по дням как часто вы видите такое, и участилось ли это - скорее всего из-за этого. ещё есть вариант вас тупо не поспевают мерджи за вставками (либо вставок стало сильно больше, либо ещё чего)

Vadim-Metikov Автор вопроса
【D】【J】
ну значит workerы все же заканчиваются, несмотря н...

Воркеры заканчивались утром, с 11 часов утра половина свободна, вставки мы разряжаем, вставляя реже, но пачками крупнее

Похожие вопросы

Обсуждают сегодня

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта