созданию таблицы (достаточно тяжелой), если поступают другие select-запросы, то очень часто все запросы разом отваливаются из-за лимита памяти (увеличить никак — памяти физически больше нет).
Как реализовать очередь запросов, для недопущения подобных ситуаций?
(я не суперспец в этих вопросах)
Куда обратить свое внимание?
Попробуйте уменьшить max_insert_threads или max_threads для запроса "создания таблицы".
я правильно понимаю, что запросы будут также слетать, даже если insert-ов не будет, но будет несколько сложных select-ов. Какой вариант решения мог бы подойти и для этого случая? Очередь ожидания исполнения запросов силами CH можно организовать? Поможет ли установить параметр max_thread_pool_size в значение 2 (или 3) ? Или этот параметр для другого?
Будут слетать. Лучше быть к этому готовым и уметь перезапускать упавшие запросы, все попытки полностью исключиь такое развитие событий ведут к неоптимальной производительности. max_thread_pool_size - рядом, но все же не для этого. Лучше смотреть на max_concurrent_queries_* и на max_threads для вообще всех запросов. А можете рассказать о своем кейсе поподробнее? Любопытно, что вы такое делаете.
Мы - один из агрегаторов (по сути), собираем данные об остатках товаров в торговых сетях - вплоть до sku и торговой точки. Уникальных позиций - тысячи, торговых точек - тысячи. Insert-запрос используется для пополнения денормализованной таблицы.
Обсуждают сегодня