Size: a a a

ClickHouse не тормозит

2021 February 22

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Vladimir Bunchuk
Ребят, такая проблема.
Кластер на 2 шарда, 2 реплики (4 ноды всего)
Есть Кафка табличка, в которой подключено около 20 топиков.
Каждый топик через свою матвью пишется в соответвующую табличку.
Сегодня в эти таблички перестали пиисаться данные. В кафке растет лаг.
Ошибок не сыпет вообще. Но если рестартовать кликхаус — получаю по каждой таблице, в которые идет запись из кафка-таблички такую вот ошибку:

Couldn't start replication: Replica appears to be already /clickhouse/tables/0/s_usergeo_state_id/replicas/srv2704 active

If you're sure it's not, try again in a minute or remove znode /clickhouse/tables/0/s_usergeo_state_id/replicas/srv2704 manually


Пробовал для одной из таблиц удалять is_active из зукипера - результатов не дало.
Подскажите, куда дальше можно копать?
Так а вообще про кафку что-нибудь есть в логах?
источник

D

Dj in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
не вписывается в дизайн и не поддерживается.
Потому что очень сложно сопровождать и не работает куча всего или работает неправильно.
Макросы невозможно использовать.
Дистрибьютид джойны не работают.
Зачастую запросы будут выполнятся одной нодой для обоих шардов.
Производительность -- кх тормозит.
"кх тормозит"

еретик!
источник

K

Konstantin in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
кмк этот бридж глубоко зависит от их схемы с динамическими полями. Его было бы невозможно использовать
ну для переезда с ELK можно и их схему было бы заадаптить, да и вообще как основу для своих поделий можно
источник

VB

Vladimir Bunchuk in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
Так а вообще про кафку что-нибудь есть в логах?
Не было
но я разобрался

Блин, это конечно как иголку в стоге сена искать. Сейчас опишу
источник

VB

Vladimir Bunchuk in ClickHouse не тормозит
Переименовал одну из 20+ шардовых табличек, в которую шла запись через матвью
из-за этого перестали писаться все таблички
ошибок в лог не падало совсем
источник

VB

Vladimir Bunchuk in ClickHouse не тормозит
нашел матвью, которое пишет из кафки в эту табличку, исправил в нем имя таблички на новое и все поехало
источник

AB

Artur Beglaryan in ClickHouse не тормозит
Добрый день. Кто-то замечал ощутимый регрес в запросах между 20.3 и 20.8?

Таблица такая
CREATE TABLE default.events
(
   `event_id`      String CODEC (ZSTD(1)),
   `event_time`    DateTime CODEC (ZSTD(1)),
   `event_machine` String CODEC (ZSTD(1))
)ENGINE = MergeTree
   PARTITION BY toYYYYMMDD(event_time)
   ORDER BY (event_machine, cityHash64(event_id))
   SAMPLE BY cityHash64(event_id) SETTINGS index_granularity = 8192


Запрос выглядит так
SELECT count()
FROM events
SAMPLE 2 / 100
WHERE ((event_time >= toDateTime('2021-02-17 11:13:40')) AND (event_time <= toDateTime('2021-02-20 11:13:40'))) AND (event_machine IN ('host_211233956'))


в 20.3.21.2
[sv-marmoset327] 2021.02.22 13:36:14.577924 [ 6779 ] {d1983a8d-6241-41ed-8743-8408f949fb4f} <Debug> default.events (SelectExecutor): Selected 7 parts by date, 7 parts by key, 16 marks to read from 12 ranges
[sv-marmoset327] 2021.02.22 13:36:14.584035 [ 6779 ] {d1983a8d-6241-41ed-8743-8408f949fb4f} <Information> executeQuery: Read 131072 rows, 9.88 MiB in 0.008 sec., 16568152 rows/sec., 1.22 GiB/sec.
[sv-marmoset327] 2021.02.22 13:36:14.584071 [ 6779 ] {d1983a8d-6241-41ed-8743-8408f949fb4f} <Debug> MemoryTracker: Peak memory usage (for query): 4.11 MiB.

1 rows in set. Elapsed: 0.009 sec. Processed 131.07 thousand rows, 10.36 MB (14.26 million rows/s., 1.13 GB/s.)

в 20.8.13.15 и в последней stable(21.2.4.6)

[sv-marmoset327] 2021.02.22 13:37:44.404006 [ 7237 ] {f2619ae3-9e88-44e7-bb07-9c8b8123e393} <Debug> default.events (SelectExecutor): Selected 7 parts by date, 7 parts by key, 127 marks by primary key, 127 marks to read from 7 ranges
[sv-marmoset327] 2021.02.22 13:37:44.437560 [ 7237 ] {f2619ae3-9e88-44e7-bb07-9c8b8123e393} <Information> executeQuery: Read 1040384 rows, 75.78 MiB in 0.035525436 sec., 29285608 rows/sec., 2.08 GiB/sec.
[sv-marmoset327] 2021.02.22 13:37:44.437602 [ 7237 ] {f2619ae3-9e88-44e7-bb07-9c8b8123e393} <Debug> MemoryTracker: Peak memory usage (for query): 17.22 MiB.

1 rows in set. Elapsed: 0.036 sec. Processed 1.04 million rows, 79.46 MB (28.54 million rows/s., 2.18 GB/s.)

такое ошущение что семплинг не работает
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Artur Beglaryan
Добрый день. Кто-то замечал ощутимый регрес в запросах между 20.3 и 20.8?

Таблица такая
CREATE TABLE default.events
(
   `event_id`      String CODEC (ZSTD(1)),
   `event_time`    DateTime CODEC (ZSTD(1)),
   `event_machine` String CODEC (ZSTD(1))
)ENGINE = MergeTree
   PARTITION BY toYYYYMMDD(event_time)
   ORDER BY (event_machine, cityHash64(event_id))
   SAMPLE BY cityHash64(event_id) SETTINGS index_granularity = 8192


Запрос выглядит так
SELECT count()
FROM events
SAMPLE 2 / 100
WHERE ((event_time >= toDateTime('2021-02-17 11:13:40')) AND (event_time <= toDateTime('2021-02-20 11:13:40'))) AND (event_machine IN ('host_211233956'))


в 20.3.21.2
[sv-marmoset327] 2021.02.22 13:36:14.577924 [ 6779 ] {d1983a8d-6241-41ed-8743-8408f949fb4f} <Debug> default.events (SelectExecutor): Selected 7 parts by date, 7 parts by key, 16 marks to read from 12 ranges
[sv-marmoset327] 2021.02.22 13:36:14.584035 [ 6779 ] {d1983a8d-6241-41ed-8743-8408f949fb4f} <Information> executeQuery: Read 131072 rows, 9.88 MiB in 0.008 sec., 16568152 rows/sec., 1.22 GiB/sec.
[sv-marmoset327] 2021.02.22 13:36:14.584071 [ 6779 ] {d1983a8d-6241-41ed-8743-8408f949fb4f} <Debug> MemoryTracker: Peak memory usage (for query): 4.11 MiB.

1 rows in set. Elapsed: 0.009 sec. Processed 131.07 thousand rows, 10.36 MB (14.26 million rows/s., 1.13 GB/s.)

в 20.8.13.15 и в последней stable(21.2.4.6)

[sv-marmoset327] 2021.02.22 13:37:44.404006 [ 7237 ] {f2619ae3-9e88-44e7-bb07-9c8b8123e393} <Debug> default.events (SelectExecutor): Selected 7 parts by date, 7 parts by key, 127 marks by primary key, 127 marks to read from 7 ranges
[sv-marmoset327] 2021.02.22 13:37:44.437560 [ 7237 ] {f2619ae3-9e88-44e7-bb07-9c8b8123e393} <Information> executeQuery: Read 1040384 rows, 75.78 MiB in 0.035525436 sec., 29285608 rows/sec., 2.08 GiB/sec.
[sv-marmoset327] 2021.02.22 13:37:44.437602 [ 7237 ] {f2619ae3-9e88-44e7-bb07-9c8b8123e393} <Debug> MemoryTracker: Peak memory usage (for query): 17.22 MiB.

1 rows in set. Elapsed: 0.036 sec. Processed 1.04 million rows, 79.46 MB (28.54 million rows/s., 2.18 GB/s.)

такое ошущение что семплинг не работает
а что если
event_machine IN (select 'host_211233956')
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
или event_machine = 'host_211233956'
источник

AB

Artur Beglaryan in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
или event_machine = 'host_211233956'
так точно работает как надо
источник

AB

Artur Beglaryan in ClickHouse не тормозит
но в 20.3 они одинаково работают
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Artur Beglaryan
так точно работает как надо
а что если
event_machine IN (select 'host_211233956')
источник

AB

Artur Beglaryan in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
а что если
event_machine IN (select 'host_211233956')
ещё хуже

SELECT count()
FROM events
SAMPLE 2 / 100
WHERE ((event_time >= toDateTime('2021-02-17 11:13:40')) AND (event_time <= toDateTime('2021-02-20 11:13:40'))) AND (event_machine IN
(
   SELECT 'host_211233956'
))

[sv-marmoset327] 2021.02.22 14:09:58.093628 [ 8185 ] {cf337f4f-c02e-4530-9ed2-d78f12756050} <Debug> executeQuery: (from [::1]:39220) SELECT count() FROM events SAMPLE 2/100 WHERE ((event_time >= toDateTime('2021-02-17 11:13:40')) AND (event_time <= toDateTime('2021-02-20 11:13:40'))) AND (event_machine in(select 'host_211233956'))
[sv-marmoset327] 2021.02.22 14:09:58.094436 [ 8185 ] {cf337f4f-c02e-4530-9ed2-d78f12756050} <Debug> InterpreterSelectQuery: MergeTreeWhereOptimizer: condition "(event_time >= toDateTime('2021-02-17 11:13:40')) AND (event_time <= toDateTime('2021-02-20 11:13:40'))" moved to PREWHERE
[sv-marmoset327] 2021.02.22 14:09:58.095739 [ 8185 ] {cf337f4f-c02e-4530-9ed2-d78f12756050} <Debug> default.events (SelectExecutor): Key condition: unknown, unknown, and, (column 0 in 1-element set), and, unknown, unknown, and, and, (column 1 in (-inf, 368934881474191031]), and
[sv-marmoset327] 2021.02.22 14:09:58.095763 [ 8185 ] {cf337f4f-c02e-4530-9ed2-d78f12756050} <Debug> default.events (SelectExecutor): MinMax index condition: (column 0 in [1613560420, +inf)), (column 0 in (-inf, 1613819620]), and, unknown, and, (column 0 in [1613560420, +inf)), (column 0 in (-inf, 1613819620]), and, and
[sv-marmoset327] 2021.02.22 14:09:58.096517 [ 8185 ] {cf337f4f-c02e-4530-9ed2-d78f12756050} <Debug> default.events (SelectExecutor): Selected 7 parts by date, 7 parts by key, 21536 marks by primary key, 21536 marks to read from 7 ranges
┌─count()─┐
│   14078 │
└─────────┘
[sv-marmoset327] 2021.02.22 14:09:58.634894 [ 8185 ] {cf337f4f-c02e-4530-9ed2-d78f12756050} <Information> executeQuery: Read 176422912 rows, 13.82 GiB in 0.541198558 sec., 325985554 rows/sec., 25.54 GiB/sec.
[sv-marmoset327] 2021.02.22 14:09:58.634944 [ 8185 ] {cf337f4f-c02e-4530-9ed2-d78f12756050} <Debug> MemoryTracker: Peak memory usage (for query): 205.50 MiB.
источник

AB

Artur Beglaryan in ClickHouse не тормозит
когда в IN подставляю несуществующее значение, всё работает как надо

SELECT count()
FROM events
SAMPLE 2 / 100
WHERE ((event_time >= toDateTime('2021-02-17 11:13:40')) AND (event_time <= toDateTime('2021-02-20 11:13:40'))) AND (event_machine IN ('1', 'host_211233956'))

[sv-marmoset327] 2021.02.22 14:10:55.930813 [ 8185 ] {f200a433-547b-4160-bf19-0430c5f230f6} <Debug> executeQuery: (from [::1]:39220) SELECT count() FROM events SAMPLE 2/100 WHERE ((event_time >= toDateTime('2021-02-17 11:13:40')) AND (event_time <= toDateTime('2021-02-20 11:13:40'))) AND (event_machine in('1', 'host_211233956'))
[sv-marmoset327] 2021.02.22 14:10:55.931236 [ 8185 ] {f200a433-547b-4160-bf19-0430c5f230f6} <Debug> InterpreterSelectQuery: MergeTreeWhereOptimizer: condition "(event_time >= toDateTime('2021-02-17 11:13:40')) AND (event_time <= toDateTime('2021-02-20 11:13:40'))" moved to PREWHERE
[sv-marmoset327] 2021.02.22 14:10:55.932268 [ 8185 ] {f200a433-547b-4160-bf19-0430c5f230f6} <Debug> default.events (SelectExecutor): Key condition: unknown, unknown, and, (column 0 in 2-element set), and, unknown, unknown, and, and, (column 1 in (-inf, 368934881474191031]), and
[sv-marmoset327] 2021.02.22 14:10:55.932303 [ 8185 ] {f200a433-547b-4160-bf19-0430c5f230f6} <Debug> default.events (SelectExecutor): MinMax index condition: (column 0 in [1613560420, +inf)), (column 0 in (-inf, 1613819620]), and, unknown, and, (column 0 in [1613560420, +inf)), (column 0 in (-inf, 1613819620]), and, and
[sv-marmoset327] 2021.02.22 14:10:55.933040 [ 8185 ] {f200a433-547b-4160-bf19-0430c5f230f6} <Debug> default.events (SelectExecutor): Selected 7 parts by date, 7 parts by key, 16 marks by primary key, 16 marks to read from 12 ranges
┌─count()─┐
│   14078 │
└─────────┘
[sv-marmoset327] 2021.02.22 14:10:55.938876 [ 8185 ] {f200a433-547b-4160-bf19-0430c5f230f6} <Information> executeQuery: Read 131072 rows, 9.88 MiB in 0.008016475 sec., 16350328 rows/sec., 1.20 GiB/sec.
[sv-marmoset327] 2021.02.22 14:10:55.938915 [ 8185 ] {f200a433-547b-4160-bf19-0430c5f230f6} <Debug> MemoryTracker: Peak memory usage (for query): 4.05 MiB.

1 rows in set. Elapsed: 0.009 sec. Processed 131.07 thousand rows, 10.36 MB (14.72 million rows/s., 1.16 GB/s.)
источник

PL

Piotr Liakhavets in ClickHouse не тормозит
привет
про
SYSTEM FLUSH DISTRIBUTED db.dist_table
- мне казалось все такого рода команды давно умеют on cluster, но не могу забороть, грит синтаксис не правильный
* версия 20.12.4.5
** да, нужен он кластер т.к. на разных нодах параллельные процессинги, и нужно быть уверенным что в моменте все влетело на борт (но при этом не накидывая в каждый инсерт insert_distributed_sync=1)

вопросы:
1 - я делаю что-то не так? ( SYSTEM FLUSH DISTRIBUTED db.distributed_table - работает, а попытка приписать on cluster cluster_name + разные кавычки перепробовал → кидает Expected identifier подсветив первую букву имени таблицы (после точки)
2 - /если нету on cluster/: есть может элегантный воркэраунд через sql, чтобы не обходить поштучно машины?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Piotr Liakhavets
привет
про
SYSTEM FLUSH DISTRIBUTED db.dist_table
- мне казалось все такого рода команды давно умеют on cluster, но не могу забороть, грит синтаксис не правильный
* версия 20.12.4.5
** да, нужен он кластер т.к. на разных нодах параллельные процессинги, и нужно быть уверенным что в моменте все влетело на борт (но при этом не накидывая в каждый инсерт insert_distributed_sync=1)

вопросы:
1 - я делаю что-то не так? ( SYSTEM FLUSH DISTRIBUTED db.distributed_table - работает, а попытка приписать on cluster cluster_name + разные кавычки перепробовал → кидает Expected identifier подсветив первую букву имени таблицы (после точки)
2 - /если нету on cluster/: есть может элегантный воркэраунд через sql, чтобы не обходить поштучно машины?
2 -- не реализовано. Там просто для каждой команды отдельно программируется on cluster. До этого SYSTEM FLUSH DISTRIBUTED никто не просил
источник

PL

Piotr Liakhavets in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
2 -- не реализовано. Там просто для каждой команды отдельно программируется on cluster. До этого SYSTEM FLUSH DISTRIBUTED никто не просил
понял, сенк
* а может через materialize() / вложенный подзапрос както можно обойти?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Piotr Liakhavets
понял, сенк
* а может через materialize() / вложенный подзапрос както можно обойти?
нет, нельзя
источник

PL

Piotr Liakhavets in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
нет, нельзя
спасибо
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Piotr Liakhavets
спасибо
можете проверять через system.distribution_queue
источник