вставке данных из селекта "INSERT INTO table SELECT ..", связанную с нехваткой памяти? сори, ошибку сейчас не воспроизведу со скрином но она самая стандартная при Очень большом запросе - "DB::Exception: Memory limit (for query) exceeded".
я в данный момент использую возможность clickhouse_driver - execute_with_progress и если запрос долго выполняется, то автоматически уменьшаю SELECT через ограничение времени в WHERE запроса и до тех пор, пока время не станет удовлетворительным.
Но мне кажется мой способ неэффективным, т.к. определение оптимальных кусков для вставки описанным выше образом через рекурсию занимает до 10 раз больше времени чем сама вставка потом этих кусков.
Есть ли более простое автоматическое решение для вставки больших запросов в python?
Тут дело не в питоне. У вас данные дальше сервера не улетают. За исключением служебной информации. То же самое будет и с clickhouse-client.
Не совсем вас понял. Я понимаю что ошибка не в питоне а на сервере, т.к. пытаюсь вставлять слишком много. Вопрос в том, как можно эту проблему решить, когда есть очень большой запрос, который надо инсертить. Мб какието настройки можно задать там или еще чего или как то получше можно этот запрос разбить на куски автоматически, чтобы это не щанимало так много времени как уменя?
Разбить по временному интервалу, например, или поднять ограничения памяти для запроса.
По временному интервалу я как раз и разбиваю автоматически через рекурсию с методом execute_with_progress, подюирая куски для вставки. Но на такой подбор уходит гораздо больше времени чем на саму вставку. Руками то задать интервалы понятно не сложно, но я хочу, чтобы это происходило автоматически
Обсуждают сегодня