Size: a a a

ClickHouse не тормозит

2020 August 24

l

lnuynxa in ClickHouse не тормозит
Кликхаус использует несколько кешей: кэш расжатых данных, кэш mark файлов и кэш файловой системы, какой из них ты хочешь отключить?
источник

A

Artem in ClickHouse не тормозит
Мне нужно, чтобы мой конкретный селект не увеличивал размер кешей. Отключать полностью мне не нужно. Только для конкретной серии запросов.
источник

A

Artem in ClickHouse не тормозит
Скорость этих запросов не важна.
источник

A

Artem in ClickHouse не тормозит
Но, как показала сегодняшняя ночь, эти запросы влияют на вставку основных данных, так как память заканчивается.
источник

A

Artem in ClickHouse не тормозит
Запросы простые типа select count() where id > 123 and id < 456
источник

SC

Smoked Cheese in ClickHouse не тормозит
А что за запросы?
источник

A

Artem in ClickHouse не тормозит
Smoked Cheese
А что за запросы?
Запросы простые типа select count() where id > 123 and id < 456
источник

A

Artem in ClickHouse не тормозит
Smoked Cheese
А что за запросы?
runningDifference() без подзапроса даёт ложно-положительные результаты при хорошей производительности, приходится проверять каждый диапазон пропусков отдельным select count().
источник

SC

Smoked Cheese in ClickHouse не тормозит
Вообще, такие запросы не должны много памяти жрать в любом случае
источник

SC

Smoked Cheese in ClickHouse не тормозит
А сообщение об ошибке по нехватке памяти можешь показать?
источник

A

Artem in ClickHouse не тормозит
Дело в том, что запросов много и часто и некоторые диапазоны получаются большие (как раз ложно-положительные). Вот кумулятивно, получается нехватка памяти. Сообщение об ошибке стандартное при попытке вставить данные. Хотя без этих мелких запросов все работало стабильно 10 дней (по 10 млн. записей в сутки).
источник

DD

Denis Dorozhkin in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
вообще что хотелось-то? кажется все можно сильно проще сделать
Есть неуникальные данные которые размазаны по шардам рандомно.
Задача - сагрегировать данные каждом шарде и уникализировать эти агрегаты во всем кластере.

Раньше была старая версия clickhouse 1.1*

И на нем проблема решалась примерно так. На каждом шарде делалась агрегация такого вида.

select * from (
select *, hostName() as hostname from distributed_table
limit 1 by unique_key
) where hostname = hostName()


После обновления на версию 19.16.14.65 этот подход перестал работать, из-за того, что появилась вероятность того, что вложенный и наружний запросы стали выполняться на разных репликах одного шарда. Соответственно стала возвращаться пустота т к hostName() никогда не совпадут (тут я очень сильно удивился, т к prefer_localhost_replica=1 не помог, может есть способ строго зафиксировать реплику?)


Появилось желание переделать c hostName() на shard_num из system.clusters, для этого делаю join этой таблицы.

виртуального _shard_num нет еще в нашей версии.
источник

D

Dj in ClickHouse не тормозит
Artem
Дело в том, что запросов много и часто и некоторые диапазоны получаются большие (как раз ложно-положительные). Вот кумулятивно, получается нехватка памяти. Сообщение об ошибке стандартное при попытке вставить данные. Хотя без этих мелких запросов все работало стабильно 10 дней (по 10 млн. записей в сутки).
для предотвращения вымывания ФС кеша (но эт не спасет вас от нехватки памяти, этот кеш сам по себе не резервирует память)
merge_tree_max_rows_to_use_cache
merge_tree_max_bytes_to_use_cache

use_uncompressed_cache - можно включить кеш (если запросы в мелкие блоки)

mark_cache_size - можно уменьшить, но это не на запрос... глобально
https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/#server-mark-cache-size
источник

TU

Temur Uzbekov in ClickHouse не тормозит
всем привет! подскажите, пожалуйста, о чём может говорить такая ошибка в логах? устойчивый сценарий воспроизведения пока получить не удалось, но предположительно это может быть связано с тем, что в таблице создаётся новая колонка, куда пишутся данные из одной из старых колонок, и у новой и старой колонок не совпадает тип, т.е. при записи данных происходит ещё и каст. По крайней мере, иногда после такого мы видим подобные сообщения в логах, но далеко не всегда. Возможно, это зависит от данных и от типов, но хз

2020.08.10 08:58:12.287773 [ 5 ] {} <Error> void DB::MergeTreeData::loadDataParts(bool): Code: 27, e.displayText() = DB::Exception: Cannot parse input: expected columns format version: 1\n at end of stream., Stack trace:

0. /usr/bin/clickhouse-server(StackTrace::StackTrace()+0x16) [0x78e07d6]
1. /usr/bin/clickhouse-server(DB::Exception::Exception(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)+0x22) [0x3a0d472]
2. /usr/bin/clickhouse-server(DB::throwAtAssertionFailed(char const*, DB::ReadBuffer&)+0x138) [0x7907ee8]
3. /usr/bin/clickhouse-server() [0x7907fd6]
4. /usr/bin/clickhouse-server(DB::NamesAndTypesList::readText(DB::ReadBuffer&)+0x44) [0x6baf954]
5. /usr/bin/clickhouse-server(DB::MergeTreeDataPart::loadColumns(bool)+0x3e8) [0x7014d18]
6. /usr/bin/clickhouse-server(DB::MergeTreeDataPart::loadColumnsChecksumsIndexes(bool, bool)+0x3d) [0x701631d]
7. /usr/bin/clickhouse-server(DB::MergeTreeData::loadDataParts(bool)+0x2b5) [0x6ff2a45]
8. /usr/bin/clickhouse-server(DB::StorageMergeTree::StorageMergeTree(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DB::ColumnsDescription const&, DB::IndicesDescription const&, bool, DB::Context&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<DB::IAST> const&, std::shared_ptr<DB::IAST> const&, std::shared_ptr<DB::IAST> const&, std::shared_ptr<DB::IAST> const&, std::shared_ptr<DB::IAST> const&, DB::MergeTreeData::MergingParams const&, DB::MergeTreeSettings const&, bool)+0x4c0) [0x6f45cd0]
9. /usr/bin/clickhouse-server() [0x70cc03b]
10. /usr/bin/clickhouse-server(std::_Function_handler<std::shared_ptr<DB::IStorage> (DB::StorageFactory::Arguments const&), std::shared_ptr<DB::IStorage> (*)(DB::StorageFactory::Arguments const&)>::_M_invoke(std::_Any_data const&, DB::StorageFactory::Arguments const&)+0x23) [0x70cd8e3]
11. /usr/bin/clickhouse-server(DB::StorageFactory::get(DB::ASTCreateQuery&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DB::Context&, DB::Context&, DB::ColumnsDescription const&, bool, bool) const+0x201) [0x6f15881]
12. /usr/bin/clickhouse-server(DB::createTableFromDefinition(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DB::Context&, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)+0x110) [0x6cc1f60]
13. /usr/bin/clickhouse-server() [0x7233536]
14. /usr/bin/clickhouse-server() [0x7233892]
15. /usr/bin/clickhouse-server() [0x78e624a]
16. /usr/bin/clickhouse-server(ThreadPoolImpl<ThreadFromGlobalPool>::worker(std::_List_iterator<ThreadFromGlobalPool>)+0x1af) [0x78e782f]
источник

TU

Temur Uzbekov in ClickHouse не тормозит

17. /usr/bin/clickhouse-server(ThreadFromGlobalPool::ThreadFromGlobalPool<ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::function<void ()>, int, std::optional<unsigned long>)::{lambda()#3}>(ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::function<void ()>, int, std::optional<unsigned long>)::{lambda()#3}&&)::{lambda()#1}::operator()() const+0x3c) [0x78e8a5c]
18. /usr/bin/clickhouse-server(ThreadPoolImpl<std::thread>::worker(std::_List_iterator<std::thread>)+0x1af) [0x78e6a0f]
19. /usr/bin/clickhouse-server() [0xb79aaef]
20. /lib/x86_64-linux-gnu/libpthread.so.0(+0x74a4) [0x7f1f13e7b4a4]
21. /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7f1f134add0f]
(version 19.8.3.8 (official build))
источник

И

Иван in ClickHouse не тормозит
Artem
Дело в том, что запросов много и часто и некоторые диапазоны получаются большие (как раз ложно-положительные). Вот кумулятивно, получается нехватка памяти. Сообщение об ошибке стандартное при попытке вставить данные. Хотя без этих мелких запросов все работало стабильно 10 дней (по 10 млн. записей в сутки).
Я правильно понял что запросе есть операторы uniq* и часть запросов падала по памяти?
источник

A

Artem in ClickHouse не тормозит
Иван
Я правильно понял что запросе есть операторы uniq* и часть запросов падала по памяти?
Есть оператор count(), часть запросов падала по памяти, но самое главное, что начинают падать инсерты.
источник

MK

Maxim Keremet in ClickHouse не тормозит
Пинг, ребята. А что делать если таблица не удалилась на одном хосте по причине:
Table was not dropped because ZooKeeper session has expired..
источник

~

~ in ClickHouse не тормозит
А есть смысл в КХ для IP-адресов использовать соответствующие типы или проще взять универсальный String?

Как понимаю, если хочется хранить IPv4 и IPv6 одновременно, то надо просто оба писать в столбец с типом IPv6?
источник

KS

Konstantin Sevastian... in ClickHouse не тормозит
подскажите, 3й день мучаюсь - матвью себя очень странно ведет. при создании с POPULATE нормально заполняется и какое то время данные появляются как ожидается, через какое то вермя данные за текущий день схлопываются в одну строку, еще через какое то время схлопывается весь август - более ранние даты не затрагиваются. В логах с trace - тишина как будто всё работает как надо
источник