Size: a a a

ClickHouse не тормозит

2021 January 26

K

KiLEX 萊赫 in ClickHouse не тормозит
ну тут крайне скудно
источник

MD

Maxim Dzeckelev in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
select * from system.macros с обоих хостов?
┌─macro───┬─substitution───────────────┐
│ cluster │ test_cluster               │
│ replica │ ch-sub-1                   │
│ shard   │ 01                         │
└─────────┴────────────────────────────┘

┌─macro───┬─substitution───────────────┐
│ cluster │ test_cluster               │
│ replica │ ch-sub-3                   │
│ shard   │ 02                         │
└─────────┴────────────────────────────┘
источник

K

KiLEX 萊赫 in ClickHouse не тормозит
Slach
для MATERIALIZED в SELECT для тех данных которые материализовались (при вставке или при Merge) данные будут выбираться без рассчета, а там где данные отсутсвуют расчет пойдет на лету
верно я понимаю что создав MATERIALIZED колонку с now() для всех новых данных будут сохраняться актуальные данные, а для старых данных поведение будет неожидаемое, будут вписаны now() в момент мержа конкретных партов?
источник

S

Slach in ClickHouse не тормозит
Lars Ulrich
Всем привет. В документации по буферным таблицам говорят, что During the read operation, data is read from the buffer and the other table simultaneously. но на самом деле это не так, основная таблица отстает от буфера на размер максимального тайм-аута для сброса. Это я что-то неправильно готовлю, или документация непроапдейчена? Версия самая последняя из апт-гета, 21.1.2.15, то же самое было на 20.9....
в смысле? ну так и задумано , что основная таблица отстает
если вы читаете из буфферной таблицы то читается из буфера и из основной таблицы...то там актуальные данные
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Maxim Dzeckelev
┌─macro───┬─substitution───────────────┐
│ cluster │ test_cluster               │
│ replica │ ch-sub-1                   │
│ shard   │ 01                         │
└─────────┴────────────────────────────┘

┌─macro───┬─substitution───────────────┐
│ cluster │ test_cluster               │
│ replica │ ch-sub-3                   │
│ shard   │ 02                         │
└─────────┴────────────────────────────┘
так это разные шарды  shard   │ 01    shard   │ 02
конечно у них разные данные

у вас в Replicated 2 шарда
а в distributed в remote_servers они описаны что они реплики

или я неправильно понял про кол-во записей на репликах
источник

LU

Lars Ulrich in ClickHouse не тормозит
Slach
в смысле? ну так и задумано , что основная таблица отстает
если вы читаете из буфферной таблицы то читается из буфера и из основной таблицы...то там актуальные данные
Буферизует записываемые данные в оперативке, периодически сбрасывая их в другую таблицу. При чтении, производится чтение данных одновременно из буфера и из другой таблицы. -  я это интерпретировал, что при чтении из основной таблицы. речь о чтении из буфера. Туплю, ага
источник

S

Slach in ClickHouse не тормозит
KiLEX 萊赫
верно я понимаю что создав MATERIALIZED колонку с now() для всех новых данных будут сохраняться актуальные данные, а для старых данных поведение будет неожидаемое, будут вписаны now() в момент мержа конкретных партов?
да, примерно так и для такого кейса кажется лучше сделать DEFAULT чтобы только для новых данных вставлялось
а старые данные через мутации ALTER TABLE ... UPDATE сделать
источник

K

KiLEX 萊赫 in ClickHouse не тормозит
Slach
да, примерно так и для такого кейса кажется лучше сделать DEFAULT чтобы только для новых данных вставлялось
а старые данные через мутации ALTER TABLE ... UPDATE сделать
Спасибо. Мне не нужен в самом деле такой кейс, скорее вопрос для понимания логики работы MATERIALIZED колонок
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Maxim Dzeckelev
┌─macro───┬─substitution───────────────┐
│ cluster │ test_cluster               │
│ replica │ ch-sub-1                   │
│ shard   │ 01                         │
└─────────┴────────────────────────────┘

┌─macro───┬─substitution───────────────┐
│ cluster │ test_cluster               │
│ replica │ ch-sub-3                   │
│ shard   │ 02                         │
└─────────┴────────────────────────────┘
да наверное если 4 сервера то select * from system.macros со всех 4-х и что в remote_servers написано?
источник

D

Dj in ClickHouse не тормозит
Vadim Metikov
SELECT
   metric,
   value
FROM system.metrics
WHERE metric LIKE '%Background%'

┌─metric───────────────────────────────────┬────────value─┐
│ BackgroundPoolTask                       │           13 │
│ BackgroundSchedulePoolTask               │            0 │
│ MemoryTrackingInBackgroundProcessingPool │  -2915439214 │
│ MemoryTrackingInBackgroundSchedulePool   │ -37714090936 │
└──────────────────────────────────────────┴──────────────┘
если тасков 40. проблемы быть не должно.. даже не знаю, может версия старая/баги
источник

MD

Maxim Dzeckelev in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
так это разные шарды  shard   │ 01    shard   │ 02
конечно у них разные данные

у вас в Replicated 2 шарда
а в distributed в remote_servers они описаны что они реплики

или я неправильно понял про кол-во записей на репликах
Да шарды разные, но я делаю запрос в  Distributed таблицу я ожидаю, что получу результат, который будет суммой всех уникальных id на всех шардах.
Это число 903265

Когда я делаю запрос в  ReplicatedMergeTree серверов находящихся в разных шардах я получаю количство уникальных id на конкретном шарде, тут у меня нет вопросов, всё верно.

Вопрос в том почему Distributed таблица возвращает разые значения

<yandex>
   <remote_servers>
       <test_cluster>
           <shard>
               <weight>1</weight>
               <internal_replication>true</internal_replication>
               <replica>
                   <host>ch-sub-1</host>
                   <port>9000</port>
                   <password>qwerty</password>
               </replica>
               <replica>
                   <host>ch-sub-2</host>
                   <port>9000</port>
                   <password>qwerty</password>
               </replica>
           </shard>
           <shard>
               <weight>1</weight>
               <internal_replication>true</internal_replication>
               <replica>
                   <host>ch-sub-3</host>
                   <port>9000</port>
                   <password>qwerty</password>
               </replica>
               <replica>
                   <host>ch-sub-4</host>
                   <port>9000</port>
                   <password>qwerty</password>
               </replica>
           </shard>
       </test_cluster>
   </remote_servers>
</yandex>
источник

MD

Maxim Dzeckelev in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
да наверное если 4 сервера то select * from system.macros со всех 4-х и что в remote_servers написано?
┌─macro───┬─substitution───────────────┐
│ cluster │ test_cluster               │
│ replica │ ch-sub-1                   │
│ shard   │ 01                         │
└─────────┴────────────────────────────┘

┌─macro───┬─substitution───────────────┐
│ cluster │ test_cluster               │
│ replica │ ch-sub-2                   │
│ shard   │ 01                         │
└─────────┴────────────────────────────┘

┌─macro───┬─substitution───────────────┐
│ cluster │ test_cluster               │
│ replica │ ch-sub-3                   │
│ shard   │ 02                         │
└─────────┴────────────────────────────┘
┌─macro───┬─substitution───────────────┐
│ cluster │ test_cluster               │
│ replica │ ch-sub-4                   │
│ shard   │ 02                         │
└─────────┴────────────────────────────┘
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Maxim Dzeckelev
Да шарды разные, но я делаю запрос в  Distributed таблицу я ожидаю, что получу результат, который будет суммой всех уникальных id на всех шардах.
Это число 903265

Когда я делаю запрос в  ReplicatedMergeTree серверов находящихся в разных шардах я получаю количство уникальных id на конкретном шарде, тут у меня нет вопросов, всё верно.

Вопрос в том почему Distributed таблица возвращает разые значения

<yandex>
   <remote_servers>
       <test_cluster>
           <shard>
               <weight>1</weight>
               <internal_replication>true</internal_replication>
               <replica>
                   <host>ch-sub-1</host>
                   <port>9000</port>
                   <password>qwerty</password>
               </replica>
               <replica>
                   <host>ch-sub-2</host>
                   <port>9000</port>
                   <password>qwerty</password>
               </replica>
           </shard>
           <shard>
               <weight>1</weight>
               <internal_replication>true</internal_replication>
               <replica>
                   <host>ch-sub-3</host>
                   <port>9000</port>
                   <password>qwerty</password>
               </replica>
               <replica>
                   <host>ch-sub-4</host>
                   <port>9000</port>
                   <password>qwerty</password>
               </replica>
           </shard>
       </test_cluster>
   </remote_servers>
</yandex>
покажите
select value from system.settings where name like '%skip_unavailable_shards%'

SELECT FQDN() f , uniqExact(id) FROM v1_comments.comments PREWHERE date = toDate('2021-01-26') group by f
источник

MD

Maxim Dzeckelev in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
покажите
select value from system.settings where name like '%skip_unavailable_shards%'

SELECT FQDN() f , uniqExact(id) FROM v1_comments.comments PREWHERE date = toDate('2021-01-26') group by f
select value from system.settings where name like '%skip_unavailable_shards%'
┌─value─┐
│ 0     │
└───────┘

SELECT FQDN() f , uniqExact(id) FROM v1_comments.comments PREWHERE date = toDate('2021-01-26') group by f

возвращает разные значения
┌─f────────────┬─uniqExact(id)─┐
│ 3194fd7faccf │        661869 │
│ 2772aa214d10 │        661869 │

┌─f────────────┬─uniqExact(id)─┐
│ 2d9bad354df4 │        241396 │
│ 3194fd7faccf │        661869 │
└──────────────┴───────────────┘
источник

D

Dj in ClickHouse не тормозит
Vadim Metikov
SELECT
   metric,
   value
FROM system.metrics
WHERE metric LIKE '%Background%'

┌─metric───────────────────────────────────┬────────value─┐
│ BackgroundPoolTask                       │           13 │
│ BackgroundSchedulePoolTask               │            0 │
│ MemoryTrackingInBackgroundProcessingPool │  -2915439214 │
│ MemoryTrackingInBackgroundSchedulePool   │ -37714090936 │
└──────────────────────────────────────────┴──────────────┘
ещё может быть что места на диске нет.
Смотрите в логи, там увидите ошибки почему мерджи не идут
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Maxim Dzeckelev
select value from system.settings where name like '%skip_unavailable_shards%'
┌─value─┐
│ 0     │
└───────┘

SELECT FQDN() f , uniqExact(id) FROM v1_comments.comments PREWHERE date = toDate('2021-01-26') group by f

возвращает разные значения
┌─f────────────┬─uniqExact(id)─┐
│ 3194fd7faccf │        661869 │
│ 2772aa214d10 │        661869 │

┌─f────────────┬─uniqExact(id)─┐
│ 2d9bad354df4 │        241396 │
│ 3194fd7faccf │        661869 │
└──────────────┴───────────────┘
это два разных сервера-инициатора вернули, у первого неправильно написано remote_servers
он с двух реплик данные взял, а не с 2х шардов
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Maxim Dzeckelev
select value from system.settings where name like '%skip_unavailable_shards%'
┌─value─┐
│ 0     │
└───────┘

SELECT FQDN() f , uniqExact(id) FROM v1_comments.comments PREWHERE date = toDate('2021-01-26') group by f

возвращает разные значения
┌─f────────────┬─uniqExact(id)─┐
│ 3194fd7faccf │        661869 │
│ 2772aa214d10 │        661869 │

┌─f────────────┬─uniqExact(id)─┐
│ 2d9bad354df4 │        241396 │
│ 3194fd7faccf │        661869 │
└──────────────┴───────────────┘
можно запросом проверять

select groupArray( (replica_num, host_address, host_name) )
from system.clusters
where cluster='test_cluster'
group by  shard_num
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Sergey Sesiunin
Привет! У меня точно такая же ошибка, нашёл этот пост с гугла.  Удалось найти решение?
версия КХ ?  select version()
источник

MD

Maxim Dzeckelev in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
можно запросом проверять

select groupArray( (replica_num, host_address, host_name) )
from system.clusters
where cluster='test_cluster'
group by  shard_num
Действительно в одном из конфигов была ошибка. 2 сервера из разных шардов были местами перепутаны.
Спасибо огромное за ваше время.
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Slach
да как то так
но насколько я помню макросов {database} и {table} не опредено ... и лучше вместо них конкретные строковые значения использовать... а {uuid} вроде как генерируется движком Atomic в runtime не подгружая из <macros>
есть такие макросы table / database, в k8s операторе как раз в доке написано так таблицы создавать, я недавно их добавил и в доку КХ
источник