Size: a a a

ClickHouse не тормозит

2020 September 22

Н

Николай in ClickHouse не тормозит
Да это вроде ж очевидно, много полей не есть гуд
источник

YY

Yury Yurochko in ClickHouse не тормозит
Roman
Эксперимент я проведу, конечно, но хотелось узнать заранее о возможных ограничениях. Может быть есть что-то, о чем уже известно, но что может не вскрыться сразу при моих тестах

Плюс, возможно, кто-то скажет, что 1к+ полей - это совсем не best practice)
1к полей:
- 1к*2+ файловых дескрипторов на каждый инсерт (это если все в одну партицию, иначе еще веселее)
- 1к*2+ файловых дескрипторов, которые нужно трогать, если делаются запросы на *
- нужно трогать большее количество файлов во время мержей и тд.

все зависит, нормально ли вам с этим жить или нет)
источник

R

Roman in ClickHouse не тормозит
Yury Yurochko
1к полей:
- 1к*2+ файловых дескрипторов на каждый инсерт (это если все в одну партицию, иначе еще веселее)
- 1к*2+ файловых дескрипторов, которые нужно трогать, если делаются запросы на *
- нужно трогать большее количество файлов во время мержей и тд.

все зависит, нормально ли вам с этим жить или нет)
понятно, спасибо)
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Roman
привет. Подскажите, есть ли какие-то ограничения на количество полей в clickhouse? Если это принципиально, движок: ReplacingMergeTree. Откуда появился вопрос - у меня есть таблица, у которой число полей может увеличиваться со временем. Сейчас их около 500, но гипотетически их число может вырасти до ~10к. Все, что мне удалось нагуглить - это что до тысячи полей все работает нормально
10к это много. Рекомендуется до 1000. Но все засисит от того сколько у вас оперативки и nvme или hdd. Потому что при инсерте будет создаваться 20тыс файлов и исользоваться 20-40гб. Я бы использовал массивы.
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Evegniy Skubeev
Всем привет! А какие есть способы копировать таблицу в другую? Есть задача добавить пару колонок, как это проще всего сделать? И как это правльно делать, и есть ли какие нибудь доки по этому?
Спасибо!
attach partition from
insert select
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Ian Pilé
а clickhouse не научился rank() ?
источник

R

Roman in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
10к это много. Рекомендуется до 1000. Но все засисит от того сколько у вас оперативки и nvme или hdd. Потому что при инсерте будет создаваться 20тыс файлов и исользоваться 20-40гб. Я бы использовал массивы.
> массивы
поля внутри Nested()?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Roman
> массивы
поля внутри Nested()?
Nested -- это сахар который работает и имеет значение только в момент парсинга create table

Nested ==== array
источник

CO

Chern Oleksander in ClickHouse не тормозит
всем привет, а не подскажите почему не дает создать view? ((
create view v_test_bets_stats as
select skill.user_id,
      skill.game_id,
      sum(skill.bonus_count_bet_50_100)    bonus_count_bet_50_100,
      sum(skill.bonus_count_bet_above_100) bonus_count_bet_above_100,
      sum(skill.cash_count_bet_50_100)     cash_count_bet_50_100,
      sum(skill.cash_count_bet_above_100)  cash_count_bet_above_100,
      sum(skill.bonus_count)               bonus_count,
      sum(skill.cash_count)                cash_count
from (
        select 'Last 7 Game Days'                                                 type,
               ts.user_id,
               ts.game_id,
               case
                   when ts.is_cashbet = 0 and ts.cost >= 5000 and ts.cost < 10000 then 1
                   else 0 end                                                     bonus_count_bet_50_100,
               case when ts.is_cashbet = 0 and ts.cost >= 10000 then 1 else 0 end bonus_count_bet_above_100,
               case
                   when ts.is_cashbet = 1 and ts.cost >= 5000 and ts.cost < 10000 then 1
                   else 0 end                                                     cash_count_bet_50_100,
               case when ts.is_cashbet = 1 and ts.cost >= 10000 then 1 else 0 end cash_count_bet_above_100,
               case when ts.is_cashbet = 0 then 1 else 0 end                      bonus_count,
               case when ts.is_cashbet = 1 then 1 else 0 end                      cash_count
        from tickets_sold ts
        where today() - ts.date + 1/*include current day*/ <= 7
        ) skill
group by skill.user_id, skill.game_id
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Slawka
Подскажите есть таблица, с полем Datetime как правильно получит данные с группировкой до минут
toStartOfMinute
источник

S

Sarybala in ClickHouse не тормозит
Народ, ttl_only_drop_parts должен был удалить пустые парты, правильно ?
Данные удалились после over TTL, а пустые парты остались

create table  temp.temp_ttl_partition_test
(
       rec_date DateTime,
       user_id String
)
engine = MergeTree
partition by formatDateTime(rec_date, '%Y%m%d%H')
ORDER BY user_id
TTL rec_date + interval 10 minute
SETTINGS ttl_only_drop_parts=1;

где неправильно делаю ?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Yury Yurochko
Привет!


(SelectExecutor): Selected 24 parts by date, 24 parts by key, 2233 marks to read from 2167 ranges
(SelectExecutor): Reading approx. 571648 rows with 4 streams


1) у меня в запросе нет времени, в order by нет времени - как интерпретировать selected 24 parts by date - как он это сделал?
2) можно ли рулить количеством streams, или это где-то внутри делается и в зависимости от выбирается это число?
By date -- читайте by partition -- это кусок кода 4х летней давности , когда кх умел партиционирование только дате/месяцу
источник

YY

Yury Yurochko in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
By date -- читайте by partition -- это кусок кода 4х летней давности , когда кх умел партиционирование только дате/месяцу
Принял, спасибо!
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Sergey
Подскажите пожалуйста, в случае использования репликации, в каких кейсах возможна потеря данных? (одновременный выход из строя всех реплик или еще в каких-то случаях)
После инсерта парт реплицируется некоторе время 1-5сек. Если сервер упадет в течении этих сек, то возможно парт будет потерян потому что он не записан на диск линуксом.
источник

SS

Shahzod Shafizod in ClickHouse не тормозит
Добрый день всем!
Какой движок советуете для таблицы балансов? Ситуация у меня такая:
Такие манипуляции делаем с таблицой балансов:
1) Зачисляем баланс - insert в таблицу с положительной суммой
2) Отменяем зачисление - insert в таблицу с отрицательной суммой
3) Получаем баланс (с критериями или без)
При этом не нужно удалять ничего, имею ввиду Collapsing или Replacing - нужна история (история каждой транзакции)
у меня в данный момент такая проблема: не могу контролировать дубликаты. Постгрес или другие строчные СУБДы не подходят так как в текущей системе с задержкой получаем баланс партнера.

Создать временную таблицу и копировать уникальные данные туда как-то не понравилось - в интернете нашел такие варианты
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Yury Yurochko
Принял, спасибо!
Принял. Это новояз какой-то что-ли? Положительная коннотация?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Владимир Голубев
Я обошёл проблему приведением decimal к float там где потенциально ожидается ноль и я хочу получить inf. Но я был немного обескуражен тем, что это не описано в документации.
Документация тоже опенсоурс. На что хватило сил у пользователей кх то они и описали.
источник

SS

Shahzod Shafizod in ClickHouse не тормозит
Переслано от Shahzod Shafizod
Вот я уже сверил этот платеж, теперь баланс провайдера больше на 10 сомони
источник

SS

Shahzod Shafizod in ClickHouse не тормозит
Shahzod Shafizod
Добрый день всем!
Какой движок советуете для таблицы балансов? Ситуация у меня такая:
Такие манипуляции делаем с таблицой балансов:
1) Зачисляем баланс - insert в таблицу с положительной суммой
2) Отменяем зачисление - insert в таблицу с отрицательной суммой
3) Получаем баланс (с критериями или без)
При этом не нужно удалять ничего, имею ввиду Collapsing или Replacing - нужна история (история каждой транзакции)
у меня в данный момент такая проблема: не могу контролировать дубликаты. Постгрес или другие строчные СУБДы не подходят так как в текущей системе с задержкой получаем баланс партнера.

Создать временную таблицу и копировать уникальные данные туда как-то не понравилось - в интернете нашел такие варианты
Такие операции как зачисление и отменение одной транзакции несколько раз допустимы
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Shahzod Shafizod
Добрый день всем!
Какой движок советуете для таблицы балансов? Ситуация у меня такая:
Такие манипуляции делаем с таблицой балансов:
1) Зачисляем баланс - insert в таблицу с положительной суммой
2) Отменяем зачисление - insert в таблицу с отрицательной суммой
3) Получаем баланс (с критериями или без)
При этом не нужно удалять ничего, имею ввиду Collapsing или Replacing - нужна история (история каждой транзакции)
у меня в данный момент такая проблема: не могу контролировать дубликаты. Постгрес или другие строчные СУБДы не подходят так как в текущей системе с задержкой получаем баланс партнера.

Создать временную таблицу и копировать уникальные данные туда как-то не понравилось - в интернете нашел такие варианты
А зачем в pg вычислять баланс по истории? Просто апдейтами в таблице балансов/счетов. Одна строка.
источник