Size: a a a

ClickHouse не тормозит

2021 February 02

S

Slach in ClickHouse не тормозит
Wolf Kreuzerkrieg
коллеги, такой вопрос, есть таблица, в ней есть парты, я хочу получить размер на диске только метаданных, т.е. размер парта минус размер всех bin файлов, есть такая возможность?
DESCIBE system.parts;
если там нет, то нет
источник

S

Slach in ClickHouse не тормозит
Wolf Kreuzerkrieg
коллеги, такой вопрос, есть таблица, в ней есть парты, я хочу получить размер на диске только метаданных, т.е. размер парта минус размер всех bin файлов, есть такая возможность?
SELECT formatReadableSize(sum(bytes_on_disk)-sum(data_compressed_bytes)) FROM system.parts GROUP BY database, table, partitions

но что вы подразумеваете под "метаданными"?
mrk + secondary индексы?
источник

А

Алексей in ClickHouse не тормозит
Алексей
Всем привет, есть какое-то решение?

было переименование таблицы
rename table table_name to table_name_old;

запрос упал из-за нехватки на сервере дискового пространства.

теперь получилось так, что файлы в дериктории для таблицы table_name_old есть, а самой таблицы нет.
DB::Exception: Target path already exists: /var/lib/clickhouse/data/db/table_name_old/

нагуглил решение с attach table, но оно не помогло, ошибка

DB::Exception: Table table_name_old doesn't exist

Буду рад любым подсказкам

version 20.4.7.67 (official build)
ATTACH table делал сокращенным образом - без определения полей

все решилось, когда в attach сделал определение всей структуры таблицы
источник

WK

Wolf Kreuzerkrieg in ClickHouse не тормозит
Slach
SELECT formatReadableSize(sum(bytes_on_disk)-sum(data_compressed_bytes)) FROM system.parts GROUP BY database, table, partitions

но что вы подразумеваете под "метаданными"?
mrk + secondary индексы?
в принципе да, марки и индексы
сеичас попытаюсь проверить...
источник

K

Kid in ClickHouse не тормозит
Добрый день, хотим хранить данные в таблице за 3 дня. Хорошая ли практика сделать почасовые партиции? и каким выражением правильно задать их?
источник

DT

Dmitry Titov in ClickHouse не тормозит
Kid
Добрый день, хотим хранить данные в таблице за 3 дня. Хорошая ли практика сделать почасовые партиции? и каким выражением правильно задать их?
Пойдет
PARTITION BY toStartOfHour(ts)
источник

K

Kid in ClickHouse не тормозит
Dmitry Titov
Пойдет
PARTITION BY toStartOfHour(ts)
спасибо, на это и смотрел.
листал историю чата, и часто упоминают, что в ЗК будет проблема при часовых партициях. в чем будет проблема? и будет ли она при хранении 3-х дней, потом удаление партици и заново.
источник

S

Slach in ClickHouse не тормозит
Kid
Добрый день, хотим хранить данные в таблице за 3 дня. Хорошая ли практика сделать почасовые партиции? и каким выражением правильно задать их?
сколько данных
миллиадр строк  в день?
источник

S

Slach in ClickHouse не тормозит
Kid
спасибо, на это и смотрел.
листал историю чата, и часто упоминают, что в ЗК будет проблема при часовых партициях. в чем будет проблема? и будет ли она при хранении 3-х дней, потом удаление партици и заново.
в ZK проблема не в том что партиции почасовые
а в том что партов может быть СЛИШКОМ много для синхронизации
когда делают почасовые партиции а данные вставляют каждый раз "за последний день"
и соответсвенно новые куски данных появляются в слишком большом кол-ве партиций...

ZK не любит когда кол-во транзакций очень большое...

но это крайние кейсы редко встречаемые
источник

S

Slach in ClickHouse не тормозит
Kid
Добрый день, хотим хранить данные в таблице за 3 дня. Хорошая ли практика сделать почасовые партиции? и каким выражением правильно задать их?
в зависимости от того сколько у вас данных и как вы их вставляете, проблем c ZK у вас быть не должно
источник

DT

Dmitry Titov in ClickHouse не тормозит
Slach
в ZK проблема не в том что партиции почасовые
а в том что партов может быть СЛИШКОМ много для синхронизации
когда делают почасовые партиции а данные вставляют каждый раз "за последний день"
и соответсвенно новые куски данных появляются в слишком большом кол-ве партиций...

ZK не любит когда кол-во транзакций очень большое...

но это крайние кейсы редко встречаемые
На самом деле с zookeeper и часовые партиции видимо проблема в этом

https://github.com/ClickHouse/ClickHouse/issues/3322
источник

K

Kid in ClickHouse не тормозит
Slach
сколько данных
миллиадр строк  в день?
от 30 до 100млн в сутки
источник

DT

Dmitry Titov in ClickHouse не тормозит
Kid
от 30 до 100млн в сутки
Наверное тогда не стоит мучатся с часовыми
PARTITION BY toDate(ts)
ORDER BY (toStartOfHour(ts),...)
источник

DT

Dmitry Titov in ClickHouse не тормозит
Будет аналогично +-
источник

S

Slach in ClickHouse не тормозит
Kid
от 30 до 100млн в сутки
IMHO тогда особого смысла делать почасовые партиции нет
если дата есть в ORDER BY
тогда оно равномерно по mrk файлам засечки сделает, и спокойно их фильтровать будет
источник

K

Kid in ClickHouse не тормозит
Dmitry Titov
Наверное тогда не стоит мучатся с часовыми
PARTITION BY toDate(ts)
ORDER BY (toStartOfHour(ts),...)
подневные партиции+в ключе сортировки на 1 месте?
источник

DT

Dmitry Titov in ClickHouse не тормозит
Kid
подневные партиции+в ключе сортировки на 1 месте?
Да, ну точнее даже вопрос, вы как фильтруете по дате в запросе?
источник

K

Kid in ClickHouse не тормозит
Slach
IMHO тогда особого смысла делать почасовые партиции нет
если дата есть в ORDER BY
тогда оно равномерно по mrk файлам засечки сделает, и спокойно их фильтровать будет
да, дата есть в ключе сортировки
источник

K

Kid in ClickHouse не тормозит
Dmitry Titov
Да, ну точнее даже вопрос, вы как фильтруете по дате в запросе?
да, будет фильтр по датам
источник

DT

Dmitry Titov in ClickHouse не тормозит
По датам только, по часам нет? (тогда toStartOfHour вам вообще не нужен)
источник