#google-cloud-platform #google-bigquery
#google-cloud-platform #google-bigquery
Вопрос:
Предположим, что было приобретено 500 слотов, пользователь1 запускает запрос BigQuery, который использует все 500 слотов. В середине обработки запроса пользователь2 запускает другой запрос, для которого, скажем, потребуется 200 слотов. Вопрос в основном заключается в планировании и совместном использовании: как слоты должны распределяться между пользователями. Например, будет ли запрос от пользователя 2 ждать освобождения слотов после завершения запроса от пользователя 1 или, по крайней мере, после того, как для его обработки потребуется меньше слотов? Или запрос от user2 захватит несколько слотов для своего выполнения еще до завершения запроса от user1 и до того, как ему потребуется меньше слотов во время его обработки, таким образом эффективно приостанавливая / прерывая некоторые «потоки» выполнения для user1 и перераспределяя сохраненные слоты для user2?
Связанный с этим вопрос заключается в том, независимо от используемого алгоритма совместного использования, существует ли способ ограничить запрос пользователя на количество слотов при выполнении его запроса?
Спасибо.
Ответ №1:
Что касается управления слотами и их отправки, то здесь есть отличное описание. Подводя итог, следует знать 2 вещи:
- Распределение слотов рассчитывается на каждом шаге запроса (вы можете просмотреть шаги в плане запроса, чтобы понять это, продолжительность каждого из них и более)
- Между всеми запросами осуществляется справедливое распределение слотов.
Следовательно, вашему запросу2 нужно просто дождаться окончания шага в плане выполнения, прежде чем он сможет получить некоторый слот и начать.
Что касается назначений слотов, вы можете распределить слот только по проекту, а не по пользователям. Вы можете выбрать тип использования слотов (ЗАПРОС, КОНВЕЙЕР, ML_EXTERNAL)
Комментарии:
1. Советы помогают. Спасибо, что поделились.