Size: a a a

ClickHouse не тормозит

2021 February 02

АБ

Алексей Барнев... in ClickHouse не тормозит
Vladimir Bunchuk
Получилось побороть?
Тоже сыпет сотни логов. Бесят )
неа... но уверен что проблема решится если приложения будут обращаться к серверу по порту 9000 )
источник

MD

Mikhail Dengin in ClickHouse не тормозит
Добрый день! Подскажите, насколько правильно использовать не временные поля при партиционировании, а какие-нибудь относительно низкокардинальные поля? При том, что это низкокардинальное поле уже часть ключа сортировки. Чувствую, что здесь что-то неправильно, но не могу аргументировать в споре.
источник

S

Sergey in ClickHouse не тормозит
Mikhail Dengin
Добрый день! Подскажите, насколько правильно использовать не временные поля при партиционировании, а какие-нибудь относительно низкокардинальные поля? При том, что это низкокардинальное поле уже часть ключа сортировки. Чувствую, что здесь что-то неправильно, но не могу аргументировать в споре.
Неудобно удалять старые данные (если это вообще требуется)
источник

S

Slach in ClickHouse не тормозит
Sergey
Неудобно удалять старые данные (если это вообще требуется)
ну это через TTL можно решить, не обязательно DROP PARTITION делать
источник

K

KiLEX 萊赫 in ClickHouse не тормозит
Mikhail Dengin
Добрый день! Подскажите, насколько правильно использовать не временные поля при партиционировании, а какие-нибудь относительно низкокардинальные поля? При том, что это низкокардинальное поле уже часть ключа сортировки. Чувствую, что здесь что-то неправильно, но не могу аргументировать в споре.
главное чтобы ВСЕ запросы в КХ выбирались по этому ключу.
источник

S

Slach in ClickHouse не тормозит
Mikhail Dengin
Добрый день! Подскажите, насколько правильно использовать не временные поля при партиционировании, а какие-нибудь относительно низкокардинальные поля? При том, что это низкокардинальное поле уже часть ключа сортировки. Чувствую, что здесь что-то неправильно, но не могу аргументировать в споре.
Зависит от задачи

главная цель партиций в том, чтобы у вас были разнесенные на диске наборы данных "не пересекающиеся"
и чтобы в каждой партиции данные из PK были размазаны равномерно
и чтобы куски данных внутри партиций (system.parts) имели на диске нормальный размер чтобы их быстро можно было full scan сделать если что...

то есть определение партиций для сканирования это первый этап

если партиций слишком много (десятки тысяч) а данные вы вставляете все равно "по времени"
то при вставке можете получить ошибку что слишком много мелких партов надо вставить в слишком большое кол-во партиций
источник

MD

Mikhail Dengin in ClickHouse не тормозит
А в ReplacingMergeTree схлопывание происходит в рамках партиции же или по всей таблице при FINAL ?
источник

K

KiLEX 萊赫 in ClickHouse не тормозит
Mikhail Dengin
А в ReplacingMergeTree схлопывание происходит в рамках партиции же или по всей таблице при FINAL ?
в рамках партиции
источник

AS

Alexey Sokolov in ClickHouse не тормозит
Slach
Зависит от задачи

главная цель партиций в том, чтобы у вас были разнесенные на диске наборы данных "не пересекающиеся"
и чтобы в каждой партиции данные из PK были размазаны равномерно
и чтобы куски данных внутри партиций (system.parts) имели на диске нормальный размер чтобы их быстро можно было full scan сделать если что...

то есть определение партиций для сканирования это первый этап

если партиций слишком много (десятки тысяч) а данные вы вставляете все равно "по времени"
то при вставке можете получить ошибку что слишком много мелких партов надо вставить в слишком большое кол-во партиций
"full scan сделать если что" - это если вдруг надо сделать запрос мимо ключа сортировки? Или в каких случаях это ещё надо?
источник

S

Slach in ClickHouse не тормозит
Alexey Sokolov
"full scan сделать если что" - это если вдруг надо сделать запрос мимо ключа сортировки? Или в каких случаях это ещё надо?
ну вот вы делаете запрос по полю которого нет ни в PRIMARY KEY ни в ORDER BY ни  в PARTITION BY ...
будут паралельно тогда сканироваться все файлы <имя_колонки.bin> с распаковкой
и с применением SECONDARY INDEX data skip алгоритмом если вдруг вы CREATE INDEX сделали
источник

AS

Alexey Sokolov in ClickHouse не тормозит
Slach
ну вот вы делаете запрос по полю которого нет ни в PRIMARY KEY ни в ORDER BY ни  в PARTITION BY ...
будут паралельно тогда сканироваться все файлы <имя_колонки.bin> с распаковкой
и с применением SECONDARY INDEX data skip алгоритмом если вдруг вы CREATE INDEX сделали
Да, это понимаю. Уточнил просто, вдруг есть ещё какие подводные камни.
Спасибо.
источник

DT

Dauletkhan Tulendiye... in ClickHouse не тормозит
Привет ребят,

Я создал таблицу, в которой у меня есть столбцы с некоторыми идентификаторами.
Эти идентификаторы могут быть удалены в основной базе данных mysql, и я должен добавить их для каждого запроса CH в качестве фильтра (предложение NOT IN).
Что я могу использовать для этого хранилища удаленных идентификаторов?
Раз в неделю или месяц я хочу обновить эти удаленные идентификаторы в CH и удалить записи из основной таблицы CH.

признателен за любую помощь, спасибо!
источник

ER

Eduard Rekuts in ClickHouse не тормозит
summingMergeTree
для каждого идентификатора вставлять обратное значение , и они со временем удалятся
источник

S

Slach in ClickHouse не тормозит
Dauletkhan Tulendiyev
Привет ребят,

Я создал таблицу, в которой у меня есть столбцы с некоторыми идентификаторами.
Эти идентификаторы могут быть удалены в основной базе данных mysql, и я должен добавить их для каждого запроса CH в качестве фильтра (предложение NOT IN).
Что я могу использовать для этого хранилища удаленных идентификаторов?
Раз в неделю или месяц я хочу обновить эти удаленные идентификаторы в CH и удалить записи из основной таблицы CH.

признателен за любую помощь, спасибо!
ну на стороне MySQL сделайте отдельную таблицу с этими идентификаторами типа (id, delete_date)
и сделайте на стороне ClickHouse
словарь CREATE DICIONARY с SOURCE MySQL
и выбирайте
SELECT ... FROM db.clickhouse_table WHERE dictGetOrDefault('db.dictionary','delete_date', tuple(id),toDate('0000-00-00')) = toDate('0000-00-00')

а потом через TTL или через мутации удаляйте
ALTER TABLE db.clickhouse_table DELETE WHERE dictGetOrDefault('db.dictionary','delete_date', tuple(id),toDate('0000-00-00')) != toDate('0000-00-00')
источник

S

Slach in ClickHouse не тормозит
Eduard Rekuts
summingMergeTree
для каждого идентификатора вставлять обратное значение , и они со временем удалятся
тоже хороший вариант, можно collapsingMergeTree только
источник

DT

Dauletkhan Tulendiye... in ClickHouse не тормозит
Slach
ну на стороне MySQL сделайте отдельную таблицу с этими идентификаторами типа (id, delete_date)
и сделайте на стороне ClickHouse
словарь CREATE DICIONARY с SOURCE MySQL
и выбирайте
SELECT ... FROM db.clickhouse_table WHERE dictGetOrDefault('db.dictionary','delete_date', tuple(id),toDate('0000-00-00')) = toDate('0000-00-00')

а потом через TTL или через мутации удаляйте
ALTER TABLE db.clickhouse_table DELETE WHERE dictGetOrDefault('db.dictionary','delete_date', tuple(id),toDate('0000-00-00')) != toDate('0000-00-00')
а потом через TTL удаляйте? должен быть калонка с настроенным TTL? или на любую калонку можно присвоить  TTL ?
источник

S

Slach in ClickHouse не тормозит
Dauletkhan Tulendiyev
а потом через TTL удаляйте? должен быть калонка с настроенным TTL? или на любую калонку можно присвоить  TTL ?
ALTER TABLE ... MODIFY TTL
источник

А

Алексей 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)
источник

K

KiLEX 萊赫 in ClickHouse не тормозит
Dauletkhan Tulendiyev
а потом через TTL удаляйте? должен быть калонка с настроенным TTL? или на любую калонку можно присвоить  TTL ?
можно на всю таблицу, также дополнительно можно на любые колонки
источник

WK

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