#google-cloud-platform #google-bigquery
#google-облачная платформа #google-bigquery
Вопрос:
Я пытаюсь выполнить 5 одновременных запросов на обновление для одной разделенной таблицы. Из 0f5, 3 из одного раздела и 2 из разных. Во время выполнения я ожидал, что один из 3 запросов останется в состоянии ожидания (2 запущенных 1 ожидающий), а остальные 2 будут в состоянии выполнения, поскольку они принадлежат к другому разделу. Но я заметил, что 2 запроса из одного и того же раздела находятся в запущенном состоянии, а остальные 3 находятся в ожидании.
Похоже ли, что 2 запроса одновременно могут находиться в состоянии выполнения, а остальные будут находиться в состоянии ожидания (в очереди), если все они принадлежат одной таблице независимо от раздела?
Ответ №1:
Всю информацию об обновлении данных секционированных таблиц с использованием DML можно найти здесь.
Кроме того, обратите внимание на ограничения и параллельные задания в DML. Если вы отправляете одну или несколько изменяющих DML-инструкций в таблицу, в то время как другие изменяющие DML-задания в ней все еще выполняются (или ожидают выполнения), BigQuery будет запускать их одновременно, вплоть до фиксированного числа одновременных изменяющих DML-инструкций. Если вы достигнете предела параллелизма, BigQuery автоматически помещает в очередь все дополнительные изменяющие задания DML в состояние ОЖИДАНИЯ.
В DML есть некоторые конфликты операторов:
Одновременный запуск изменяющих операторов DML в таблице может завершиться ошибкой из-за конфликтов в вносимых ими изменениях. BigQuery повторяет эти сбои.
Оператор INSERT DML, который вставляет строки в таблицу, не конфликтует с любым другим одновременно выполняемым оператором DML.
Инструкции MERGE DML, содержащие только предложение INSERT без предложений UPDATE или DELETE, не конфликтуют с другими одновременно выполняемыми инструкциями DML.
Операторы слияния DML с предложениями UPDATE или DELETE не конфликтуют с любым другим одновременно выполняемым оператором DML, если оператор СЛИЯНИЯ не приводит к обновлению или удалению существующих строк.