Обсуждаем ClickHouse
в запросе еще указываются
settings mutations_sync=2,
allow_nondeterministic_mutations=1;
ну я уже рецепт сказал. использование sub select в мутациях это путь к изнасилованию диска... sub select для каждой строки выполняется...
Читать полностью…ну попробовать скобочки расставить если?
ALTER TABLE db.table DELETE WHERE `Ссылка` IN ( (SELECT `Ссылка` FROM temp_tables.S_Nomenklatura_update) UNION DISTINCT (SELECT `Ссылка` FROM temp_tables.S_Nomenklatura_delete) )Читать полностью…
в профиле каком? в дефолтном? в каком профиле по вашему мутация исполняется?
Читать полностью…да но почему.. там же явно вы UNION DISTINCT указали...
ну разве что оно ошибочно UNION DISTINCT SELECT читает как UNION SELECT DISTINCT
Запросами на системные таблицы.
https://kb.altinity.com/altinity-kb-setup-and-maintenance/altinity-kb-data-migration/add_remove_replica/
subselect внутри мутации вообще плохая идея... сделайте лучше на словарях
https://kb.altinity.com/altinity-kb-queries-and-syntax/update-via-dictionary/
кх нужен драйвер чтобы работать сам с собой ? интересная для меня инфа, не знал
Читать полностью…встретили ошибку при мутациях c UNION 25.3.2.39, куда смотреть? как исправить?
(DELETE WHERE `Ссылка` IN (SELECT `Ссылка` FROM temp_tables.S_Nomenklatura_update UNION DISTINCT SELECT `Ссылка` FROM temp_tables.S_Nomenklatura_delete))
Code: 36. DB::Exception: UNION mode UNION_DEFAULT must be normalized. (BAD_ARGUMENTS), Stack trace (when copying this message, always include the lines below):Читать полностью…
DB::Exception::Exception(DB::Exception::MessageMasked&&, int, bool) @ 0x000000000f48dcdb
DB::Exception::Exception(PreformattedMessage&&, int) @ 0x0000000009f6520c
DB::Exception::Exception(int, FormatStringHelperImpl::type>, char const*&&) @ 0x000000000c5bf66b
DB::UnionNode::UnionNode(std::shared_ptr, DB::SelectUnionMode) @ 0x0000000012bceb18
DB::(anonymous namespace)::QueryTreeBuilder::buildSelectWithUnionExpression(std::shared_ptr const&, bool, String const&, std::shared_ptr const&, std::shared_ptr const&) const @ 0x0000000012c41645
DB::(anonymous namespace)::QueryTreeBuilder::buildExpression(std::shared_ptr const&, std::shared_ptr const&) const @ 0x0000000012c3fd6e
DB::(anonymous namespace)::QueryTreeBuilder::buildExpression(std::shared_ptr const&, std::shared_ptr const&) const @ 0x0000000012c4064a
DB::(anonymous namespace)::QueryTreeBuilder::buildSelectExpression(std::shared_ptr const&, bool, String const&, std::shared_ptr const&, std::shared_ptr const&) const @ 0x0000000012c448fa
DB::(anonymous namespace)::QueryTreeBuilder::buildSelectOrUnionExpression(std::shared_ptr const&, bool, String const&, std::shared_ptr const&, std::shared_ptr const&) const @ 0x0000000012c3e326
DB::buildQueryTree(std::shared_ptr, std::shared_ptr) @ 0x0000000012c3e066
DB::(anonymous namespace)::prepareQueryAffectedQueryTree(std::vector> const&, std::shared_ptr const&, std::shared_ptr) @ 0x0000000013615c7e
DB::isStorageTouchedByMutations(std::shared_ptr, std::shared_ptr, std::shared_ptr const&, std::vector> const&, std::shared_ptr) @ 0x0000000013614fb1
DB::MutateTask::prepare() @ 0x00000000147c2e40
DB::MutateTask::execute() @ 0x00000000147c2a04
DB::ReplicatedMergeMutateTaskBase::executeStep() @ 0x000000001482e841
DB::MergeTreeBackgroundExecutor::threadFunction() @ 0x000000001454326d
ThreadPoolImpl>::ThreadFromThreadPool::worker() @ 0x000000000f5c3e1b
void std::__function::__policy_invoker::__call_impl[abi:ne190107]::ThreadFromGlobalPoolImpl>::ThreadFromThreadPool::)(), ThreadPoolImpl>::ThreadFromThreadPool>(void (ThreadPoolImpl>::ThreadFromThreadPool::&&)(), ThreadPoolImpl>::ThreadFromThreadPool&&)::'lambda'(), void ()>>(std::__function::__policy_storage const*) @ 0x000000000f5ca942
ThreadPoolImpl::ThreadFromThreadPool::worker() @ 0x000000000f5c114f
void* std::__thread_proxy[abi:ne190107]>, void (ThreadPoolImpl::ThreadFromThreadPool::)(), ThreadPoolImpl::ThreadFromThreadPool>>(void*) @ 0x000000000f5c841a
? @ 0x00007f85e249f802
? @ 0x00007f85e243f450
(version 25.3.2.39 (official build))
А вот чтобы работал новый тип json нужно подключать кликхауз драйвер 0.8.2 и в нём временки не видны становятся, это как-то обошли?
Читать полностью…ага, идею понял. Так возможно проще будет. Попробую.
Читать полностью…да, я из бачта достаю уникальные ids и генерю запрос
Читать полностью…ну у меня там и так уже есть стейджовая таблица для левой таблицы. А для правой CTE в которой как раз и ошибка. Возможно между надо какую-то временную таблицу сделать и для правой.
Читать полностью…а тут пусто
select * from system.mutations where is_done = '0';Читать полностью…
Exception happened during execution of mutation '0000000018' with part '202506_2_2_0_20' reason: 'Code: 36. DB::Exception: UNION mode UNION_DEFAULT must be normalized. (BAD_ARGUMENTS)
This error maybe retryable or not. In case of unretryable error, mutation can be killed with KILL MUTATION query 0. DB::checkMutationStatus(std::optional<DB::MergeTreeMutationStatus>&, std::set<String, std::less<String>, std::allocator<String>> const&) @ 0x0000000014a5df89 1. DB::StorageReplicatedMergeTree::waitMutationToFinishOnReplicas(std::vector<String, std::allocator<String>> const&, String const&) const @ 0x00000000143776f9 2. DB::StorageReplicatedMergeTree::waitMutation(String const&, unsigned long) const @ 0x00000000144484d4 3. DB::StorageReplicatedMergeTree::mutate(DB::MutationCommands const&, std::shared_ptr<DB::Context const>) @ 0x000000001447a032 4. DB::InterpreterAlterQuery::executeToTable(DB::ASTAlterQuery const&) @ 0x0000000013805a19 5. DB::InterpreterAlterQuery::execute() @ 0x00000000138026ed 6. DB::executeQueryImpl(char const*, char const*, std::shared_ptr<DB::Context>, DB::QueryFlags, DB::QueryProcessingStage::Enum, DB::ReadBuffer*, std::shared_ptr<DB::IAST>&) @ 0x0000000013c17628 7. DB::executeQuery(DB::ReadBuffer&, DB::WriteBuffer&, bool, std::shared_ptr<DB::Context>, std::function<void (DB::QueryResultDetails const&)>, DB::QueryFlags, std::optional<DB::FormatSettings> const&, std::function<void (DB::IOutputFormat&, String const&, std::shared_ptr<DB::Context const> const&, std::optional<DB::FormatSettings> const&)>, std::function<void ()>) @ 0x0000000013c1ba6f 8. DB::HTTPHandler::processQuery(DB::HTTPServerRequest&, DB::HTMLForm&, DB::HTTPServerResponse&, DB::HTTPHandler::Output&, std::optional<DB::CurrentThread::QueryScope>&, StrongTypedef<unsigned long, ProfileEvents::EventTag> const&) @ 0x0000000014f1641b 9. DB::HTTPHandler::handleRequest(DB::HTTPServerRequest&, DB::HTTPServerResponse&, StrongTypedef<unsigned long, ProfileEvents::EventTag> const&) @ 0x0000000014f1a029 10. DB::HTTPServerConnection::run() @ 0x0000000014fcfcca 11. Poco::Net::TCPServerConnection::start() @ 0x00000000186e4307 12. Poco::Net::TCPServerDispatcher::run() @ 0x00000000186e4759 13. Poco::PooledThread::run() @ 0x00000000186afa5b 14. Poco::ThreadImpl::runnableEntry(void*) @ 0x00000000186adf3d 15. ? @ 0x00007fda8a49f802 16. ? @ 0x00007fda8a43f450 . (UNFINISHED) (version 25.5.2.47 (official build))Читать полностью…
поставил в дефолтном, протестировал что не работает и убрал
Читать полностью…пытался с настройкой
SET union_default_mode = 'DISTINCT';
или в профиле указать - результат тот же
как будто срабатывает это, хотя в запросе явно указано UNION DISTINCT
If you use UNION without explicitly specifying UNION ALL or UNION DISTINCT, you can specify the union mode using the union_default_mode setting. The setting values can be ALL, DISTINCT or an empty string. However, if you use UNION with union_default_mode setting to empty string, it will throw an exception. The following examples demonstrate the results of queries with different values setting.Читать полностью…
analyzer включен или выключен?
SELECT * FROM system.settings WHERE name LIKE '%analyzer%' FORMAT VerticalЧитать полностью…
Привет всем, кто подскажет самый лёгкий способ создать копию базы но нужна только структура.
Читать полностью…https://github.com/ClickHouse/ClickHouse/issues/69428
ваше ?
В 25.3 уже без allow работает, но чтобы селект делать нужен новый драйвер
Читать полностью…я с таким не сталкивался, allow_expirimental_.... чего-то там мне достаточно было чтобы включить джсон на кх
Читать полностью…У меня один insert в одну таблицу. Батчи большие. Я просто хочу балансировку между репликами. Уменьшить время рассинхрона при селекте. Не то чтобы это было критично. Но все же было бы приятно, чтобы уменьшилось время.
Тогда другой вопрос про балансировку. Уже про chproxy. Пусть есть кластер - 2 шарда по 2 реплики. Есть два варианта настройки Chproxy - просто прописать все ноды и реплики либо сделать группировку по шардам. Может кто-то пробовал и скажет - какой лучше?
а может есть возможность доставать эти ид уже из таблицы куда этот батч вставлен ?
если нет
тогда сделайте временную таблицу в памяти и оттуда
where id in (select id from temp_table)
возможно вам CTE не нужно
у вас, как я понял, where in (list_of_ids) и этот list_of_ids генерируется скриптом ?
я такой момент обошел за счет создания временных таблиц или подзапросов (смотря что нужно в каких случаях)
Читать полностью…