Обсуждаем ClickHouse
http://********.mdb.yandexcloud.net:8443/
Почему-то не могу подключиться к веб интерфейсу теперь, ERR_CONNECTION_RESET
Что там за этим веб-интерфейсом? Там UI какой-то, или это будет rest api от базы данных?
ну раз --secure сработало то уже не важно
Читать полностью…клиент какой версии
clickhouse-client --version?
вы понимаете что такое overflow и почему он происходит?
прочитайте внимательно что происходит с S
https://clickhouse.com/docs/sql-reference/data-types/decimal#operations-and-result-type
у вас на выходе получается Decimal(18,15) - то есть из 18 знаков - 15 после запятой... то есть любое значение больше 1000 будет overflow
у вас там либо 10 знаков в сумме либо тройное перемножение откуда то добавилось...
всем привет. подскажите плиз, как изменить ЛАйфтайм дикта существующего
Читать полностью…так у вас чтоли sum(value1) переполняется?
или что?
что именно попробовали то?
Попробовал, не помогло(
У меня
sum(value1) * value2Читать полностью…
Пользуйтесь AskAI в доке (снизу справа). Я знал ответ, но не сеттинги наизусть и пока еще не надоедло его тестировать. Вот ваш запрос и его ответ полным копипастом:
У меня 2 процесса в кубере, оба пишут/читают кликхауз (source, destination), одинаковые.Читать полностью…
Они берут из одного места и кладут в другое, ЕСЛИ ТАМ (в destination) ЕЩЕ НЕТ.
Там глобальный внешний mutex, чтобы они не пересекались.
Но вот беда. Первый заинсертил, разлочил, второй зашел, залочил, смотрит А ТАМ (в destination) ЕЩЕ НЕТ (хотя первый заинсертил).
Какие там гарантии есть, я понимаю шо транзакции итп это не про кликхауз. Но вот разница в том случае, который вылез, 45 секунд между ними, а второй всё равно не видит данных, которые первый заинсертил.
Я понимаю вашу проблему с согласованностью данных в ClickHouse. Это классический случай проблемы с согласованностью в распределенной системе.
В ClickHouse используется модель согласованности "eventual consistency" (итоговая согласованность), а не строгая согласованность, как в традиционных OLTP базах данных. Это означает, что после успешной вставки данных может пройти некоторое время, прежде чем эти данные станут видимыми для всех реплик.
Вот причины, почему второй процесс не видит данные, вставленные первым:
Асинхронная репликация: ClickHouse использует асинхронную репликацию, где данные, записанные на одну реплику, не сразу становятся доступными на других репликах. Data Replication and Data Integrity Support подтверждает, что "ClickHouse uses asynchronous multi-master replication".
Разные соединения к разным репликам: Если ваши процессы подключаются к разным репликам, то второй процесс может не видеть данные, вставленные первым, пока репликация не завершится. Как указано в документации: "If you write to one replica and read from another, you can use issue SYSTEM SYNC REPLICA LIGHTWEIGHT prior to reading" Sequential consistency.
Возможность "грязного чтения": В ClickHouse существует возможность "dirty reads", когда "users can write data to one replica and then read potentially unreplicated data from another" User implications.
Для решения этой проблемы есть несколько подходов:
Использование одной и той же реплики: Если вы используете один и тот же сеанс или подключаетесь к одной и той же реплике для чтения и записи, то вы всегда будете видеть последние вставленные данные: "If you are using native protocol, or a session to do your write/read via HTTP, you should then be connected to the same replica: in this scenario you're reading directly from the node where you're writing, then your read will always be consistent" Inserting into ClickHouse Cloud.
Синхронизация реплик вручную: Перед чтением выполните команду SYSTEM SYNC REPLICA LIGHTWEIGHT.
Включение последовательной согласованности: Используйте настройку select_sequential_consistency = 1 для запросов SELECT. Это заставит ClickHouse обеспечить, что запрос будет выполнен только на тех репликах, которые содержат данные от всех предыдущих INSERT-запросов select_sequential_consistency.
Обратите внимание, что использование select_sequential_consistency может увеличить нагрузку на ClickHouse Keeper и замедлить производительность, поэтому рекомендуется использовать этот подход с осторожностью.
Для вашего конкретного случая, когда разница составляет 45 секунд, проблема, скорее всего, связана с тем, что ваши процессы подключаются к разным репликам, и репликация данных между ними занимает больше времени, чем вы ожидаете.
Там в клауде как-то по другому, читайте тут - https://clickhouse.com/docs/cloud/reference/shared-merge-tree#consistency
В обчном клике это select_sequential_consistency and quorum_insert. Ну и sync replica тоже может помочь подождать пока не приедет
Подскажите. Есть табличка с полем AggregateFunction(uniq) - где хранятся уникальные юзеры. Ну и это поле привязано к дате. То есть храним по дням. А подскажте как правильно подсчитать общее количество уникальных юзеров за диапазон дат в этом случае?
Читать полностью…cat /etc/clickhouse-server/config.d/backup_disk.xmlЧитать полностью…
docker compose logs
вы уверены что на том сервере котором надо меняли конфигурацию?
Читать полностью…Я так понимаю, что речь про обычный limit offset, где offset-строки все равно читаются. В случае с sample offset я не замечал, чтобы аналогичное поведение повторялось
Читать полностью…ClickHouse client version 25.4.2.31 (official build).
Читать полностью…Пытаюсь подключаться к кластеру CH в yandex cloud через clickhouse-client, "packet length too long, while reading from socket". Есть идеи, в чем косяк?
Читать полностью…создать новый такой же с другим лайфтаймом и через exchange dictionaries заменить атомарно)
Читать полностью…Попробовал
toDecimal64(sum(value1) * value2, 5)Читать полностью…
value1 и value2 — Decimal64(5)
На выходе тоже хочется получиться Decimal64(5)
что нибудь типа
toDecimal64(value1 * value2, 3)пробовали? Читать полностью…
Привет! Подскажите, Decimal64 при перемножении во вьюшке постоянно в math overflow уходит. Как можно избежать ошибки, чтобы во вьюшке тип Decimal64 оставался в итоге?
Читать полностью…select_sequential_consistency
Офигенчик, огромное спасибо что ткнул носом
SELECT uniqMerge(your_field) FROM db.table WHERE date_field BETWEEN ? AND ?
<clickhouse>Читать полностью…
<storage_configuration>
<disks>
<backups>
<type>local</type>
<path>/backups/</path>
</backups>
</disks>
</storage_configuration>
<backups>
<allowed_disk>backups</allowed_disk>
<allowed_path>/backups/</allowed_path>
</backups>
</clickhouse>
root@clickhouse:~# docker compose logsЧитать полностью…
WARN[0000] /root/docker-compose.yaml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
clickhouse-1 | ClickHouse Database directory appears to contain a database; Skipping initialization
clickhouse-1 | Processing configuration file '/etc/clickhouse-server/config.xml'.
clickhouse-1 | Merging configuration file '/etc/clickhouse-server/config.d/backup_disk.xml'.
clickhouse-1 | Merging configuration file '/etc/clickhouse-server/config.d/docker_related_config.xml'.
clickhouse-1 | Logging trace to /var/log/clickhouse-server/clickhouse-server.log
clickhouse-1 | Logging errors to /var/log/clickhouse-server/clickhouse-server.err.log
развёрнуто через docker. проброшены конфиги через volumes после изменения применял docker compose up -d --force-recreate
Читать полностью…https://use-the-index-luke.com/no-offset
https://use-the-index-luke.com/sql/partial-results/fetch-next-page
правда клик в него не может нормально, но можно раскрыть запросы в полную форму
https://github.com/ClickHouse/ClickHouse/issues/66109